组织项目以支持 .NET Framework 和 .NET

可以创建可并行编译 .NET Framework 和 .NET 的解决方案。 本文介绍多个项目组织选项,可帮助你实现此目标。 下面是在决定如何使用 .NET 设置项目布局时要考虑的一些典型方案。 该列表可能不会涵盖所需的所有内容。

  • 将现有项目和 .NET 项目合并到单个项目中

    优点:

    • 通过编译单个项目而不是针对不同 .NET Framework 版本或平台的多个项目来简化生成过程。
    • 简化了多目标项目的源文件管理,因为必须管理单个项目文件。 添加或删除源文件时,替代方法要求你手动将这些文件与其他项目同步。
    • 轻松生成 NuGet 包以供使用。
    • 允许使用编译器指令为特定 .NET Framework 版本编写代码。

    缺点

  • 将所有项目保持独立

    优点:

    • 支持开发人员和贡献者将现有项目进行开发,即使他们可能没有 Visual Studio 2019 或更高版本。
    • 降低在现有项目中创建新 bug 的可能性,因为这些项目不需要代码变动。

请考虑 此示例 GitHub 存储库。 下图显示了此存储库的布局方式:

现有项目结构图

以下部分介绍了基于示例存储库添加对 .NET 的支持的几种方法。

将现有项目替换为多目标 .NET 项目

重新组织存储库,以便删除任何现有的 *.csproj 文件,并创建一个面向多个框架的 *.csproj 文件。 这是一个很好的选择,因为单个项目可以针对不同的框架进行编译。 它还有权处理每个目标框架的不同编译选项和依赖项。

面向多个框架关系图的项目

有关示例代码,请参阅 GitHub

要注意的更改如下:

  • packages.config*.csproj 替换为新的 .NET *.csproj。 使用 <PackageReference> ItemGroup 来指定 NuGet 包。

保留现有项目并创建 .NET 项目

如果存在面向较旧框架的现有项目,你可能希望使这些项目保持不变,并使用 .NET 项目面向未来的框架。

其他文件夹关系图中包含现有项目的 .NET 项目

有关示例代码,请参阅 GitHub

.NET 和现有项目保存在单独的文件夹中。 将项目保留在单独的文件夹中可避免强制使用 Visual Studio 2019 或更高版本。 可以创建一个单独的解决方案,该解决方案仅打开旧项目。

另请参阅