有没有办法覆盖 AssemblyInfo.cs 中的属性(例如 AssemblyVersionAttribute)?

Mat*_*ton 7 c# msbuild .net-core

我正在使用 dotnet 核心。这是针对 CI 流程,而不是本地构建。我希望允许开发人员为标题等内容创建 AssemblyInfo.cs 文件,但我希望我的构建过程能够控制程序集的版本。

目前我正在使用“dotnet build ... /p:Version=1.2.3.4”命令,但一旦出现 AssemblyInfo.cs 文件,即使 AssemblyInfo.cs 未指定,此版本号也会被取代任何版本属性。

我可以从 CLI 控制版本的唯一方法是删除 AssemblyInfo.cs 文件。有没有什么方法可以做到这一点,而无需在构建之前手动更改 AssemblyInfo.cs 文件?

Mar*_*ich 8

该工具生成.cs包含程序集属性的自定义文件。编译器只允许每个属性只定义一个。通常您会完全关闭自动程序集信息生成,但 SDK 使您能够单独控制每个属性的生成。

因此,如果您编辑 csproj 文件以包含这些属性组(在<Project>元素内):

<PropertyGroup>
  <!-- true is the default here -->
  <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
  <GenerateAssemblyCopyrightAttribute>false</GenerateAssemblyCopyrightAttribute>
  <GenerateAssemblyDescriptionAttribute>false</GenerateAssemblyDescriptionAttribute>
  <GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
  <GenerateAssemblyTitleAttribute>false</GenerateAssemblyTitleAttribute>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

这些属性不会在编译期间自动生成,您可以在自定义属性中定义它们。完整列表可在 dotnet/sdk repo 中找到