gpt4 book ai didi

msbuild - 如何使用MSBuild更改AssemblyProduct,AssemblyTitle?

转载 作者:行者123 更新时间:2023-12-03 12:28:20 25 4
gpt4 key购买 nike

我有一个MSBuild脚本,可以编译我现有的解决方案,但是我想在编译时更改解决方案中项目之一的某些属性,包括但不限于AssemblyProduct和AssemblyTitle。

这是我的构建脚本的片段:

  <Target Name="Compile" >
<MSBuild Projects="..\MySolution.sln"
Properties="Configuration=MyReleaseConfig;Platform=x86" />
</Target>

我有一个主要的可执行文件和几个已编译的DLL。我知道 MSBuild Extension Pack,我怀疑它可能有助于我到达需要的位置,尽管我不确定如何继续。

我可以在构建时选择性地更改AssemblyInfo属性吗?

最佳答案

使用MSBuild扩展包,您的方向正确。

我发现在构建时有条件生成组装详细信息的最简单方法是将“AssemblyVersion”目标直接添加到需要更新的AssemblyInfo文件的.csproj文件中。您可以将目标直接添加到需要更新的AssemblyInfo文件的每个csproj文件中,或者按照我的意愿,使用AssemblyVersion目标创建一个自定义目标文件,并使每个csproj文件都包含您的自定义目标文件。

无论哪种方式,您都可能想使用MSBuild Extension Pack或MSBuild Community Tasks来使用它们各自的AssemblyInfo任务。

以下是我们的构建脚本中的一些代码:

<!-- Import the AssemblyInfo task -->
<Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets"/>

<!-- Overriding the Microsoft.CSharp.targets target dependency chain -->
<!-- Call our custom AssemblyVersion target before build, even from VS -->
<PropertyGroup>
<BuildDependsOn>
AssemblyVersion;
$(BuildDependsOn)
</BuildDependsOn>
</PropertyGroup>

<ItemGroup>
<AssemblyVersionFiles Include="$(MSBuildProjectDirectory)\Properties\AssemblyInfo.cs"/>
</ItemGroup>

<Target Name="AssemblyVersion"
Inputs="@(AssemblyVersionFiles)"
Outputs="UpdatedAssemblyVersionFiles">
<Attrib Files="%(AssemblyVersionFiles.FullPath)"
Normal="true"/>
<AssemblyInfo
CodeLanguage="CS"
OutputFile="%(AssemblyVersionFiles.FullPath)"
AssemblyCompany="$(CompanyName)"
AssemblyCopyright="Copyright $(CompanyName), All rights reserved."
AssemblyVersion="$(Version)"
AssemblyFileVersion="$(Version)">
<Output TaskParameter="OutputFile"
ItemName="UpdatedAssemblyVersionFiles"/>
</AssemblyInfo>
</Target>

关于msbuild - 如何使用MSBuild更改AssemblyProduct,AssemblyTitle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3585444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com