如果目标框架是较新版本,那么我的项目代码可能会有一些小的地方可以大大改进.我希望能够更好地利用C#中的条件编译来根据需要切换它们.
就像是:
#if NET40
using FooXX = Foo40;
#elif NET35
using FooXX = Foo35;
#else NET20
using FooXX = Foo20;
#endif
Run Code Online (Sandbox Code Playgroud)
这些符号中的任何一个都是免费的吗?我是否需要将这些符号作为项目配置的一部分注入?看起来很容易,因为我知道哪个框架是MSBuild的目标.
/p:DefineConstants="NET40"
Run Code Online (Sandbox Code Playgroud)
更新:我的问题是人们如何处理这种情况?你在创造不同的配置吗?您是否通过命令行传递常量?
首先,在所有Nuget代码中,我试图弄清楚要引用哪一个.
主要问题是,给定一个Nuget包名称,是否有一种编程方式从nuget feed中检索版本以及一般消费的最新版本?
例如,给定ILMerge的包名称,获得2.13.307的最新包版本会很不错.
//pseudo code, makes a lot of assumptions about nuget programmatic interfaces
PackageRef currentVersion = nugetlib.getpackageinfo(args[0]);
Console.WriteLine("Package Id: '{0}':", pkg.Id);
Console.WriteLine(" Current version: {0}", pkg.Version);
Console.WriteLine(" Available versions: {0}", String.Join(",",pkg.Versions.Select(_=>_)));
Run Code Online (Sandbox Code Playgroud)