相关疑难解决方法(0)

条件编译和框架目标

如果目标框架是较新版本,那么我的项目代码可能会有一些小的地方可以大大改进.我希望能够更好地利用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)

更新:我的问题是人们如何处理这种情况?你在创造不同的配置吗?您是否通过命令行传递常量?

c# msbuild .net-4.0 .net-3.5

121
推荐指数
4
解决办法
5万
查看次数

如何强制应用程序使用.NET 3.5或更高版本?

我们的应用程序是使用VS 2008构建的,使用Linq并将Target Framework设置为.NET Framework3.5.

当只在机器上安装.NET 3.5或4时,它可以正常工作.

但是,在安装了.NET 2(或3.0)和.NET 4的计算机上,应用程序加载了.NET 2,并在访问Linq时崩溃,因为它查找.NET 3.5库.

在app.config中使用标签似乎没有帮助,因为它指定了CLR版本,在.NET 3.5的情况下为2.

请注意,我们的安装会验证是否已安装.NET 3.5或更高版本.

有没有办法告诉应用程序加载:

  • 它找到的最高CLR,或
  • CLR 4(如果已安装)和CLR 2(如果未安装CLR 4)或
  • 如果安装了.NET 3.5,则为CLR 2;如果未安装.NET 3.5,则为CLR 4

(请注意,在Element文档的Community Content部分中仍未回答类似的问题)

.net clr .net-4.0 .net-3.5

14
推荐指数
1
解决办法
7795
查看次数

如何强制.NET 3.5应用程序在.NET 4.5运行时运行?

我正在尝试实现此处描述的解决方案:我可以在面向.NET 3.5 SP1时使用.NET 4功能吗?.当.NET 3.5应用程序在.NET 4.0上运行时,它可以正常工作.但是,在.NET 4.5上,该应用程序在.NET 3.5环境中运行.我尝试过以下方法:

<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
<supportedRuntime version="v4.0"/>
<supportedRuntime version="v2.0.50727"/>
Run Code Online (Sandbox Code Playgroud)

没有成功.Environment.Version仍然告诉我2.0.50727.5456在.NET 4.0上一切正常.

有没有办法强制.NET 3.5应用程序使用.NET 4.5(如果可用)?

.net .net-4.5

4
推荐指数
1
解决办法
6925
查看次数

标签 统计

.net ×2

.net-3.5 ×2

.net-4.0 ×2

.net-4.5 ×1

c# ×1

clr ×1

msbuild ×1