2011-06-13 26 views
0

我想我的構建過程中更新下列自定義屬性(這是在我的項目文件中的一個自定義屬性:的MSBuild:更新自定義項目屬性

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

嘗試使用AdditionalProperties,

<ItemGroup> 
    <SolutionToBuild Include=".../Suite.sln"> 
     <Targets></Targets> 
     <AdditionalProperties>TestVersion=True</AdditionalProperties> 
    </SolutionToBuild> 
    </ItemGroup> 

現在這樣做(或使用屬性,你有以上)只適用於你正在創建的item數組,在這種情況下@(SolutionToBuild)被傳遞給MSBuild任務。

從你的問題中看到你想要做什麼有點困難,但使用XML來改變項目文件是不行的。根據你想要做的事情,有一個適當的方法來改變財產。改變這個屬性的場景是什麼?它來自命令行還是來自構建機器腳本?

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> 
相關問題