可以创建可并行编译 .NET Framework 和 .NET 的解决方案。 本文介绍多个项目组织选项,可帮助你实现此目标。 下面是在决定如何使用 .NET 设置项目布局时要考虑的一些典型方案。 该列表可能不会涵盖所需的所有内容。
-
优点:
- 通过编译单个项目而不是针对不同 .NET Framework 版本或平台的多个项目来简化生成过程。
- 简化了多目标项目的源文件管理,因为必须管理单个项目文件。 添加或删除源文件时,替代方法要求你手动将这些文件与其他项目同步。
- 轻松生成 NuGet 包以供使用。
- 允许使用编译器指令为特定 .NET Framework 版本编写代码。
缺点:
- 要求开发人员使用 Visual Studio 2019 或更高版本打开现有项目。 若要支持较旧版本的 Visual Studio, 请将项目文件保存在不同的文件夹中 是更好的选择。
-
优点:
- 支持开发人员和贡献者将现有项目进行开发,即使他们可能没有 Visual Studio 2019 或更高版本。
- 降低在现有项目中创建新 bug 的可能性,因为这些项目不需要代码变动。
请考虑 此示例 GitHub 存储库。 下图显示了此存储库的布局方式:
以下部分介绍了基于示例存储库添加对 .NET 的支持的几种方法。
将现有项目替换为多目标 .NET 项目
重新组织存储库,以便删除任何现有的 *.csproj 文件,并创建一个面向多个框架的 *.csproj 文件。 这是一个很好的选择,因为单个项目可以针对不同的框架进行编译。 它还有权处理每个目标框架的不同编译选项和依赖项。
有关示例代码,请参阅 GitHub。
要注意的更改如下:
- 将 packages.config 和 *.csproj 替换为新的 .NET *.csproj。 使用
<PackageReference> ItemGroup
来指定 NuGet 包。
保留现有项目并创建 .NET 项目
如果存在面向较旧框架的现有项目,你可能希望使这些项目保持不变,并使用 .NET 项目面向未来的框架。
有关示例代码,请参阅 GitHub。
.NET 和现有项目保存在单独的文件夹中。 将项目保留在单独的文件夹中可避免强制使用 Visual Studio 2019 或更高版本。 可以创建一个单独的解决方案,该解决方案仅打开旧项目。