2011-07-08 5 views
0

埋め込み時に私のアプリケーションの設定を修正するためにmsbuild拡張パックを使用しようとしています 私の環境固有の設定ファイルを読み込むプロパティ(ENV) detokeniserと一緒に使用して、アプリケーションの設定を修正してください。msbuild拡張パックdetokeniseを使用するプロパティスコープ

<UsingTask TaskName="MSBuild.ExtensionPack.FileSystem.Detokenise" 
      AssemblyFile=".\Tools\MSBuild Extension Pack 4.0.3.0\MSBuild.ExtensionPack.dll"/> 
<Import Project=".\Environments\$(Env).properties"/> 
<Target Name="Build" > 
    <ItemGroup> 
     <SourceTemplates Include=".\Templates\**\*.*"/> 
    </ItemGroup> 

    <RemoveDir Directories=".\Temp"/> 
    <MakeDir Directories=".\Temp"/> 

    <Message Text="@(SourceTemplates)"/> 

    <Copy SourceFiles="@(SourceTemplates)" 
      DestinationFolder=".\Temp\%(RecursiveDir)" /> 

    <ItemGroup> 
     <TargetTemplates Include=".\Temp\**\*.*"/> 
    </ItemGroup> 

    <MSBuild.ExtensionPack.FileSystem.Detokenise 
     TaskAction="Detokenise" 
     TargetFiles="@(TargetTemplates)"/> 
</Target> 

だから私は

MSBuildのDetokenise.msbuild/P使用して、これを呼び出す:Envの=のProd

MSBuildのが私のファイルを知っていると私はそのプロパティへのアクセス権を持っていますが、このよう 私のハードコードは、これを解決する方法を 任意のアイデアをIT-場合

Detokenise Task Execution Completed [15:07:50] 
C:\Source\1.2\Build\Detokenise.msbuild(27,3): 
error : InvalidProjectFileException: The imported project "C:\Source\1.2\Build\Environments\.properties" was not found. 
Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. 
C:\Source\1.2\Build\Detokenise.msbuild\r 
C:\Source\1.2\Build\Detokenise.msbuild(27,3): error : 

すべてが正常に動作します:detokeniserは、私はエラーを取得する実行します。私は、あなたが地元のプロパティには、このパラメータをアサインしようとすることができ

答えて

2

...私は実行する前に、MSBuildの上でいくつかのテキスト置換を行うことを考えた:

<PropertyGroup Condition="'$(Env)'=='Prod'"> 
    <TargetEnv>Prod</TargetEnv> 
</PropertyGroup> 

<!-- add other environments as needed --> 
<PropertyGroup Condition="'$(Env)'=='Test'"> 
    <TargetEnv>Test</TargetEnv> 
</PropertyGroup> 

<Import Project=".\Environments\$(TargetEnv).properties"/> 

あなたはまた、引用符であなたのパラメータ値を囲むために試みることができます:

msbuild Detokenise.msbuild /p:"Env=Prod" 

問題は再現できないため、サンプルコードに示されていない他のパラメータの副作用がある可能性があります。

+0

おかげでそれが機能するようになりましたし、あなたの方法は、通常、私のためだけで正常に動作する方法はかなりmcuh thatsの、それはに思えますタスクファイルのロードに関する何かが原因で問題が発生します。私はプロパティとその正しいことを伝えることができますが、タスクに渡すと前処理された値に戻ります。 –

+0

この問題を部分的に解決するには、タスクのプロパティCommandLineValuesを使用します –

関連する問題