相关疑难解决方法(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万
查看次数

C#中的#ifdef

我想在C#而不是C++中进行以下操作

#ifdef _DEBUG
bool bypassCheck=TRUE_OR_FALSE;//i will decide depending on what i am debugging
#else
bool bypassCheck = false; //NEVER bypass it
#endif
Run Code Online (Sandbox Code Playgroud)

c#

116
推荐指数
2
解决办法
13万
查看次数

在编译时检测目标框架版本

我有一些使用扩展方法的代码,但是使用VS2008中的编译器在.NET 2.0下编译.为了促进这一点,我不得不声明ExtensionAttribute:

/// <summary>
/// ExtensionAttribute is required to define extension methods under .NET 2.0
/// </summary>
public sealed class ExtensionAttribute : Attribute
{
}
Run Code Online (Sandbox Code Playgroud)

但是,我现在想要包含该类的库也可以在.NET 3.0,3.5和4.0下编译 - 没有'ExtensionAttribute在多个地方定义'警告.

当目标框架版本是.NET 2时,是否有任何编译时指令可用于仅包含ExtensionAttribute?

.net c# msbuild extension-methods visual-studio

57
推荐指数
5
解决办法
3万
查看次数

无论如何在解决方案基础上#define Constant?

无论如何#define Constant在Visual Studio解决方案基础上?

可以在csproject的基础上定义一个常量,并且可以放入#define constantcs文件,但是我想知道是否可以在vs sln的基础上定义它?

c# visual-studio-2008 visual-studio

27
推荐指数
4
解决办法
2万
查看次数

是否可以有条件地编译为.NET Framework版本?

我可以回想一下,在使用MFC时,您可以通过检查_MFC_VER宏来支持多个版本的MFC框架.

我现在正在使用.NET 4做一些事情,并希望在几个地方使用Tuple,但仍然保持其他一切3.5兼容.

我想做的事情如下:

#if DOTNET4
    public Tuple<TSource, TResult> SomeMethod<TSource, TResult>(){...}
#else
    public KeyValuePair<TSource, TResult> SomeMethod<TSource, TResult>(){...}
#endif
Run Code Online (Sandbox Code Playgroud)

.net c# conditional-compilation .net-4.0

17
推荐指数
4
解决办法
7606
查看次数

如何在C#visual studio中定义预处理器符号

对不起,如果我的术语错了.我#if TEST_APP在我的代码中写道.现在我想定义TEST_APP.我如何使用visual studios 2010进行设置?这是一个Windows窗体应用程序.

如果您能告诉我在winform项目和Web项目中设置的符号的名称,可以获得奖励

c# visual-studio-2010 visual-studio

14
推荐指数
2
解决办法
2万
查看次数

.NET 4的条件编译

可能重复:
C#条件编译和框架目标

我有一些代码在.NET 4中工作,但在.NET 3.5中不起作用,在.NET 3.5中它需要使用对Windows的互操作调用.

我想在两种情况下使用"ifdef"来使用不同的代码路径(最终我将弃用.NET 3.5代码).

是否有预定义的指令值来确定何时使用.NET4编译代码?是否有与所有预定义指令(DEBUG,TRACE,...)的良好链接?以下链接仅提供指令,但不提供标准预定义值:

http://msdn.microsoft.com/en-us/library/ed8yd1ha(v=VS.100).aspx

c# conditional-compilation .net-4.0 conditional-statements

9
推荐指数
2
解决办法
9883
查看次数