You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitVersion环境下,单文件发布且GenerateAssemblyInfo=false时Copyright属性缺失如何解决?

解决WPF单文件发布+GitVersion+版权信息共存的方案

核心矛盾是单文件发布要求关闭自动AssemblyInfo生成,但GitVersion依赖它注入版权等属性。下面是两种能同时满足四个条件的实操方法:

方案一:通过项目配置单独生成版权属性

保持<GenerateAssemblyInfo>false</GenerateAssemblyInfo>以支持单文件发布,同时在.csproj中添加以下配置,让编译器单独生成AssemblyCopyright属性并注入GitVersion提供的版权值:

<PropertyGroup>
  <!-- 启用单独生成版权属性 -->
  <GenerateAssemblyCopyrightAttribute>true</GenerateAssemblyCopyrightAttribute>
  <!-- 直接引用GitVersion生成的Copyright变量 -->
  <Copyright>$(GitVersion.Copyright)</Copyright>
</PropertyGroup>

这样设置后,编译器会自动把版权信息嵌入到程序集元数据中,既不影响单文件发布,反射代码也能正常读取,文件详情里也会显示版权信息。

方案二:手动创建自定义AssemblyInfo文件并让GitVersion注入

  1. 在项目根目录创建一个CustomAssemblyInfo.cs文件,内容如下:
using System.Reflection;

[assembly: AssemblyCopyright("$GitVersion.Copyright$")]
// 可按需添加其他GitVersion生成的属性,比如版本号
[assembly: AssemblyVersion("$GitVersion.SemVer$")]
  1. 在.csproj中添加配置,让GitVersion在构建时替换文件中的令牌:
<Target Name="InjectGitVersionInfo" BeforeTargets="CoreCompile">
  <ItemGroup>
    <GitVersionFiles Include="CustomAssemblyInfo.cs" />
  </ItemGroup>
  <Exec Command="dotnet gitversion /updatefiles" />
</Target>
  1. 确保<GenerateAssemblyInfo>false</GenerateAssemblyInfo>已经设置,避免和手动文件产生冲突。

这两种方法都能实现:GitVersion正常工作、单文件发布成功、反射代码读取到版权信息、文件详情显示版权内容。

内容的提问来源于stack exchange,提问作者Tom667

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 20:45:30