即使不可能“直接”本地化您的 AssemblyInfo(例如Resources.MyCompany
,如您的问题所示使用),您可以做的是在编译时生成完整的 AssemblyInfo,然后再进行实际编译。
以下是一些如何使用免费和开源的MSBuild 社区任务执行此操作的示例:
这两个链接都显示了如何在一个单独的 MSBuild 文件中执行此操作,该文件被称为构建解决方案,但也可以将其直接放在 .csproj 文件中,这意味着AssemblyInfo.cs
在 Visual Studio 中构建解决方案时甚至可以创建。
这是我的一个项目中的一个示例,如何做到这一点。
(请注意,在这个例子中我没有生成整体AssemblyInfo.cs
,而是一个只包含版本号的单独文件!)
MSBuild 社区任务调用位于.csproj 文件中:
<Target Name="BeforeBuild">
<PropertyGroup>
<ProdVer>0.0</ProdVer>
</PropertyGroup>
<PropertyGroup>
<ProdVer Condition="'$(VersionNumber)' != ''">$(VersionNumber)</ProdVer>
</PropertyGroup>
<AssemblyInfo CodeLanguage="CS" OutputFile="AssemblyVersion.cs" AssemblyVersion="$(ProdVer)" AssemblyFileVersion="$(ProdVer)" />
</Target>
该<AssemblyInfo ...
行调用 MSBuild 社区任务来创建一个文件AssemblyVersion.cs
,版本号设置为$(ProdVer)
.
$(ProdVer)
之前设置为0.0
几行,当有一个名为的环境变量$(VersionNumber)
不为空时,$(ProdVer)
设置为该值。
并$(VersionNumber)
在调用我的构建脚本之前通过简单地调用set VersionNumber=1.1
批处理文件进行设置。
这意味着在从 Visual Studio 构建时AssemblyVersion.cs
使用版本号创建,在通过构建脚本构建时0.0
使用真实版本号(在我的示例中)创建。1.1
当然,以这种方式将您的本地化公司信息放入程序集中比仅仅在Resources.MyCompany
某个地方调用更多工作,但可以根据需要对 AssemblyInfo 进行本地化。