c#-是否有一种方法可以从AssemblyInfo.cs覆盖属​​性(例如AssemblyVersionAttribute)

我正在使用dotnet核心.这是针对配置项过程,而不是本地构建.我希望允许开发人员为诸如title等之类的东西创建AssemblyInfo.cs文件,但我希望自己的构建过程能够控制程序集的版本.

当前,我正在使用“ dotnet build … /p:Version=1.2.3.4”命令,但是一旦存在AssemblyInfo.cs文件,该版本号就会被取代,即使AssemblyInfo.cs未指定任何版本属性.

我可以从CLI控制版本的唯一方法是删除AssemblyInfo.cs文件.有什么方法可以执行此操作而无需在构建之前手动更改AssemblyInfo.cs文件?

解决方法:

该工具会生成一个包含程序集属性的自定义.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.

上一篇:CodeGo.net>使用MSBuildWorkspace打开解决方案会给出诊断错误,没有详细信息


下一篇:指定 Nuget 使用 特定的 vs MSBUILD 版本