Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建一个支持不同运行时(2.0和4.0)的.NET C#项目(生成代码)?_C#_.net_.net 4.0_.net 2.0 - Fatal编程技术网

如何创建一个支持不同运行时(2.0和4.0)的.NET C#项目(生成代码)?

如何创建一个支持不同运行时(2.0和4.0)的.NET C#项目(生成代码)?,c#,.net,.net-4.0,.net-2.0,C#,.net,.net 4.0,.net 2.0,有没有可能,如果有,我该如何创建一个.NET项目(在C#中),它可以为2.0和4.0.NET编译 我需要的是: 我想用C#4.0中提供的一些功能创建一个项目,但使用这些功能是可选的。如果项目是为.NET 4.0编译的,则这些功能处于活动状态并在中编译。在为2.0编译时,这些特性会被删除 我希望有一个构建过程,这意味着当我在VS中单击“build”按钮时,项目将同时为2.0和4.0构建,创建独立的程序集和可执行文件 如何配置我的项目和代码以满足此要求?如果您使用.Net 2.0,您可以使用其他版本

有没有可能,如果有,我该如何创建一个.NET项目(在C#中),它可以为2.0和4.0.NET编译

我需要的是:

我想用C#4.0中提供的一些功能创建一个项目,但使用这些功能是可选的。如果项目是为.NET 4.0编译的,则这些功能处于活动状态并在中编译。在为2.0编译时,这些特性会被删除

我希望有一个构建过程,这意味着当我在VS中单击“build”按钮时,项目将同时为2.0和4.0构建,创建独立的程序集和可执行文件


如何配置我的项目和代码以满足此要求?

如果您使用.Net 2.0,您可以使用其他版本(3.5、4.0、4.5)编译代码,因为较新的版本已经包含较旧的版本(但未删除功能错误)


编辑:但是如果您使用.Net 4.0,则无法在旧版本(如2.0)中编译它,因为4.0中的某些特定函数在2.0中不可用。

您可以将只在.Net 4中编译的代码放入 在单独的dll中,加载相关的类、方法等。。 通过思考

因此,假设您有一种“有时”需要开始新任务的方法= 您应该将任务hadeling放在单独的dll中, 如果版本合适,可以从dll加载类并通过反射运行其方法

您应该只在.net2中编译代码,只在.net4中编译外部dll

在运行时,您可以根据配置值决定是否加载.net4 dll, 或者,如果要检查计算机上是否安装了.net i:
我是如何使用
#define
实现这一点的。我有两个C#项目。一个名为Assembly-2.csproj,一个名为Assembly-4.csproj。-2项目有一个名为
NET2
条件编译符号(存储在构建项目设置中),而-4项目有一个名为
NET4
。然后,在代码中,我执行以下操作:

#if NET2
public static void MyExtensionMethod(string self)
#else
public static void MyExtensionMethod(this string self)
#endif
{
    // ...

如果使用此机制,请确保在应用程序中重命名程序集名称。在这种情况下,我会调用程序集resp<代码>组件2和
组件4
。您也可以跳过这一步,但我发现如果程序集具有不同的名称,并且名称显示了它们用于哪个版本的框架,那么实际管理这些程序集要容易得多。

您是否认为您编写了一些相反的内容。你能在2.0框架下编译.NET4.0代码吗??我很怀疑下面的链接显示了如何做到这一点:在机器上安装.NET4需要10分钟。它是免费的,不占用你任何时间。与您正在考虑的解决方案竞争非常激烈,您会后悔超过10分钟。