我正在尝试在构建期间更新以下自定义属性(这是我的一个项目文件中的自定义属性:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<TestVersion>False</TestVersion>
我尝试将UpdateElement与MSBuild扩展包一起使用。我也尝试使用“SolutionToBuild”的属性设置进行设置,但似乎没有设置值。
我尝试过的一些事情:
<ItemGroup>
<SolutionToBuild Include="$(BuildProjectFolderPath)/../../$(SuiteSourceBranchRoot)/Source/XXX/Suite.sln">
<Targets></Targets>
<Properties>TestVersion=True;</Properties>
<CustomPropertiesForBuild>TestVersion=True;</CustomPropertiesForBuild>
</SolutionToBuild>
</ItemGroup>
<XmlFile
File ="$(SolutionRoot)\$(SuiteSourceBranchRoot)\Source\XXX\XXX\Sample.csproj"
TaskAction="UpdateElement"
XPath="/Project/PropertyGroup/TestVersion"
InnerText="True"
/>
我需要在两个项目中设置这个值,因为我选择何时关闭此值。
谢谢。
答案 0 :(得分:0)
要允许覆盖属性,仅在未设置值时设置其默认值:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<TestVersion Condition="'$(TestVersion)' != ''">False</TestVersion>
答案 1 :(得分:0)
尝试使用AdditionalProperties,
<ItemGroup>
<SolutionToBuild Include=".../Suite.sln">
<Targets></Targets>
<AdditionalProperties>TestVersion=True</AdditionalProperties>
</SolutionToBuild>
</ItemGroup>
现在执行此操作(或使用上面的属性)仅在您创建的项目数组时应用,在这种情况下@(SolutionToBuild)将传递给MSBuild任务。
从你的问题看你想要做什么有点困难,但使用XML来改变项目文件是不可取的。根据您的尝试,有一种改变财产的正确方法。改变这个属性的场景是什么?它来自命令行,还是来自构建机器脚本?