我使用的是dotnet核心。这适用于CI流程,而不是本地构建。我想允许开发人员为标题等内容创建AssemblyInfo.cs文件,但我希望我的构建过程能够控制程序集的版本。
目前我正在使用" dotnet build ... /p:Version=1.2.3.4"命令,但只要存在AssemblyInfo.cs文件,即使AssemblyInfo.cs没有指定任何版本属性,此版本号也会被取代。
我可以从CLI控制版本的唯一方法是删除AssemblyInfo.cs文件。有没有办法这样做而不需要在构建之前手动更改AssemblyInfo.cs文件?
答案 0 :(得分:4)
工具生成包含装配属性的自定义.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>
这些属性不会在编译期间自动生成,您可以在自定义属性中定义它们。完整列表为available in the dotnet/sdk repo。