MSBuild:更新自定义项目属性

MSBuild:更新自定义项目属性,msbuild,Msbuild,我试图在生成期间更新以下自定义属性这是我的一个项目文件中的自定义属性: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup> <TestVersion>Fals

我试图在生成期间更新以下自定义属性这是我的一个项目文件中的自定义属性:

<?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"
  />
我需要在两个项目中设置此值,因为我可以选择何时关闭此值


谢谢。

若要允许重写属性,请仅在未设置任何值时设置其默认值:

<?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>

尝试使用附加属性

  <ItemGroup>
    <SolutionToBuild Include=".../Suite.sln">
      <Targets></Targets>
      <AdditionalProperties>TestVersion=True</AdditionalProperties>
    </SolutionToBuild>
  </ItemGroup>
现在,仅当您正在创建的项数组(在本例中@SolutionToBuild被传递给MSBuild任务)时,执行此操作或使用上述属性才适用

从您的问题中可以看出您正在尝试做什么有点困难,但是使用XML来更改项目文件并不是一种可行的方法。根据您尝试执行的操作,有一种适当的方法来更改属性。更改此属性的场景是什么?它是来自命令行还是来自构建机器脚本