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注入
- 在项目根目录创建一个
CustomAssemblyInfo.cs文件,内容如下:
using System.Reflection; [assembly: AssemblyCopyright("$GitVersion.Copyright$")] // 可按需添加其他GitVersion生成的属性,比如版本号 [assembly: AssemblyVersion("$GitVersion.SemVer$")]
- 在.csproj中添加配置,让GitVersion在构建时替换文件中的令牌:
<Target Name="InjectGitVersionInfo" BeforeTargets="CoreCompile"> <ItemGroup> <GitVersionFiles Include="CustomAssemblyInfo.cs" /> </ItemGroup> <Exec Command="dotnet gitversion /updatefiles" /> </Target>
- 确保
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>已经设置,避免和手动文件产生冲突。
这两种方法都能实现:GitVersion正常工作、单文件发布成功、反射代码读取到版权信息、文件详情显示版权内容。
内容的提问来源于stack exchange,提问作者Tom667
相关产品推荐
相关产品推荐

