如何将计算出的MSBuild属性传递给正在生成的项目?
我试图将计算出的属性值从TFS proj文件传递到正在生成的解决方案的csproj文件中,但传递的总是未修改的值。我怀疑这是一个任务排序问题,但不确定。sln何时读取属性值 我的项目文件的精简版本为:如何将计算出的MSBuild属性传递给正在生成的项目?,msbuild,Msbuild,我试图将计算出的属性值从TFS proj文件传递到正在生成的解决方案的csproj文件中,但传递的总是未修改的值。我怀疑这是一个任务排序问题,但不确定。sln何时读取属性值 我的项目文件的精简版本为: <PropertyGroup> <ProductMajorVersion>4</ProductMajorVersion> <ProductMinorVersion>5</ProductMinorVersion> <Pro
<PropertyGroup>
<ProductMajorVersion>4</ProductMajorVersion>
<ProductMinorVersion>5</ProductMinorVersion>
<ProductBuildNumber>0</ProductBuildNumber>
<ProductUpdateVersion>0</ProductUpdateVersion>
</PropertyGroup>
<Target Name="BeforeEndToEndIteration">
<!-- Calculate changeset number -->
<MSBuild.Community.Tasks.Tfs.TfsClient ToolPath="C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE"
Command="history /s:$(TFSPath) /stopafter:1 /format:detailed /version:T $/mobile/main"
Recursive="true">
<Output TaskParameter="Changeset" PropertyName="ProductBuildNumber"/>
</MSBuild.Community.Tasks.Tfs.TfsClient>
<Message Text="TFS ChangeSetNumber: $(ProductBuildNumber)" />
</Target>
<ItemGroup>
<SolutionToBuild Include="$(BuildProjectFolderPath)/../../Main/BuildAll.sln">
<Targets></Targets>
<Properties>ProductMajorVersion=$(ProductMajorVersion);ProductMinorVersion=$(ProductMinorVersion);ProductBuildNumber=$(ProductBuildNumber);ProductUpdateVersion=$(ProductUpdateVersion)</Properties>
</SolutionToBuild>
</ItemGroup>
4.
5.
0
0
ProductMajorVersion=$(ProductMajorVersion);ProductMinorVersion=$(ProductMinorVersion);ProductBuildNumber=$(ProductBuildNumber);ProductUpdateVersion=$(ProductUpdateVersion)
消息正确输出修改后的ProductBuildNumber,但我的sln文件仍将其读取为0
有人能帮忙吗?解决了
在solutiontobuild中传递属性仅适用于静态属性。动态属性不能以这种方式传递,而是在目标中声明它们被修改如下:
<Target Name="BeforeEndToEndIteration">
<!-- modifying code -->
<PropertyGroup>
<CustomPropertiesForBuild>$(CustomPropertiesForBuild);ProductBuildNumber=$(ProductBuildNumber)</CustomPropertiesForBuild>
</PropertyGroup>
</Target>
$(CustomProperties for Build);ProductBuildNumber=$(ProductBuildNumber)
文件中的顺序并不代表执行的顺序。总是让人困惑。