2011-06-14 16 views
1

ビルド中のcsprojファイルの値を値に設定する方法を探していました。プロパティを永続的に値に設定するために使用できるタスクはMSBuildにありますか?以下の例では、CustomValue = Yesを永久に設定できますか?MSBuild:プロジェクトのPropertyGroupプロパティを永続的に変更する

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    ..... 
    <CustomValue>XXXX</CustomValue 
    <FileAlignment>512</FileAlignment> 
    <ProjectTypeGuids></ProjectTypeGuids> 
    <SccProjectName>SAK</SccProjectName> 
    <SccLocalPath>SAK</SccLocalPath> 
    <SccAuxPath>SAK</SccAuxPath> 
    <SccProvider>SAK</SccProvider> 
    </PropertyGroup> 

答えて

3

これを行うには、XmlPokeタスクを使用できます。しかし、この方法でプロジェクトを変更するのは少し奇妙に思えます。また、あなたはその後、動的にあなたはこのファイルを.propsにXmlPokeを使用するか、またはにWriteLinesToFileを使用するか、

<?xml version="1.0" encoding="utf-8"?> 
<Project 
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003" 
    ToolsVersion="4.0"> 
    <PropertyGroup> 
    <CustomValue>True</CustomValue> 
    </PropertyGroup> 
</Project> 

として、このプロパティファイルを作成

<!-- in your main project file, right below the PropertyGroup --> 
<Import 
    Condition="Exists('Custom.props')" 
    Project="Custom.props" 
    /> 

、小さなインポートファイルを設定することができますファイル全体を作成します。このセカンダリファイルはソースコントロールにチェックインする必要はなく、ファイルが存在しない場合はインポート時にプロジェクトが機能します。

XmlPokeタスクが

<XmlPoke 
    XmlInputPath="./Custom.props" 
    Namespaces="&lt;Namespace Prefix='x' 
     Uri='http://schemas.microsoft.com/developer/msbuild/2003'/&gt;" 
    Query="//x:PropertyGroup/x:CustomValue/@Value" 
    Value="True" 
    /> 
+0

は、これは素晴らしい働い、次のようになります。ありがとうございました。 –

+0

MsBuild 4.0にXmlアップデートタスクがあったことを知りませんでした。コミュニティタスクライブラリでXmlUpdateを使用していますが、将来は組み込みのライブラリを使用します。 –

関連する問題