在 .NET Framework 类库中,我可以右键单击项目 > 属性并单击程序集版本,更新版本,一旦 dll 可用,它就是构建的一部分。然后我在构建 NuGet 包时使用了这个版本。
在 Visual Studio 2022 中,我有一个 .NET 6 类库,但是当我右键单击时,我没有看到相同的程序集版本选项,尽管我在包下看到它,但我无法判断它是否与程序集版本相同,或者包是否是仅适用于 NuGet。
增加程序集版本的正确位置是什么,以便它发生在类库和我构建的任何 NuGet 包上?
您可以将文件Directory.Build.props添加到解决方案中,内容如下:
<Project>
<PropertyGroup>
<BuildCounter>0</BuildCounter>
<MajorMinorVersion>1</MajorMinorVersion>
<Version>$(MajorMinorVersion).$(BuildCounter)</Version>
<FileVersion>$(MajorMinorVersion).$(BuildCounter)</FileVersion>
<Product>Product name</Product>
<Company>Company name</Company>
</PropertyGroup>
</Project>
注意:这将为解决方案中包含的所有项目的构建输出设置相同的程序集版本。
查看文档以获取有关用法的更多信息。
从 .NET Framework 迁移 .NET SDK 项目文档的 MSBuild 参考部分:
.NET Framework 项目模板使用这些程序集信息属性集创建一个代码文件。该文件通常位于因此,如果需要,您可以通过将以下内容添加到 .csproj 并将相应的文件添加到解决方案来恢复此文件:.\Properties\AssemblyInfo.cs 或 .\Properties\AssemblyInfo.vb。 SDK 样式的项目会根据项目设置为您生成此文件。 你不能同时拥有两者。 将代码移植到 .NET 5(或 .NET Core 3.1)或更高版本时,请执行以下操作之一:
通过在项目文件中将
- 将
GenerateAssemblyInfo
设置为false
来禁用包含程序集信息属性的临时代码文件的生成。这使您能够保留您的AssemblyInfo文件。AssemblyInfo
文件中的设置迁移到工程文件中,然后删除AssemblyInfo
文件。
<PropertyGroup>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup>
或者只是管理 .csproj 本身的属性。