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