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

本文关键字:NET 运行时 项目 创建 何创建 支持 代码 | 更新日期: 2023-09-27 18:20:07

是否有可能,如果是,那么我该怎么做,创建一个可以针对 2.0 和 4.0 .NET 编译的 .NET 项目(在 C# 中(。

我需要什么:

我想创建一个具有 C# 4.0 中可用一些功能的项目,但使用这些功能是可选的。如果项目是针对 .NET 4.0 编译的,则功能处于活动状态并编译在中。在为 2.0 编译时,功能被翻转并省略。

我想要一个构建过程,这意味着当我单击 VS 中的"构建"按钮时,该项目是为 2.0 和 4.0 构建的,创建单独的程序集和可执行文件。

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

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

你可以放置只在 .NET 4 中编译的代码在单独的 DLL 中,加载相关的类、方法等。通过反思。

因此,假设您有一个"有时"需要启动新任务的方法=你应该把任务放在单独的dll中,如果版本合适,则可以从 DLL 加载类并通过反射运行其方法。

应仅在 .

net2 中编译代码,仅在 .net4 中编译外部 DLL。

在运行时,你决定是否根据配置值加载 .net4 dll,或者,如果您愿意检查计算机上是否安装了 .NET I:有没有一种简单的方法来检查.NET Framework版本?

我是如何做到这一点的,#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。 Assembly-2Assembly-4 .您也可以跳过此步骤,但是如果程序集具有不同的名称并且名称显示它们适用于哪个版本的框架,我发现实际管理程序集要容易得多。

如果您使用 .

Net 2.0,则可以使用其他版本(3.5、4.0、4.5(编译代码,因为较新的版本已经包含旧版本(但未删除函数错误(!

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