2011-01-12 9 views

答えて

4

C:\ Program Files \ MSBuild \ Microsoft \ WebDeployment \ v9.0またはv10.0ディレクトリには、TempBuildDirプロパティが_PrepareForBuildターゲットで定義されているMicrosoft.WebDeployment.targetsファイルがあります。

これらはCreatePropertyタスクを使用してTempBuildDirを設定するため、プロパティが既に存在する場合でも常にハードコーディングされた値に設定されます。これは、他の何かのためにTempBuildDirプロパティを使用してビルドを台無しにする問題を排除するためのものです。

異なる一時ディレクトリを使用するようにMicrosoft.WebDeployment.targetsファイルを変更する必要があります。

警告:以下は、管理していないファイルを変更しているため、自己責任で使用してください。あなたは

<CreateProperty Value="$(MySpecialWebTempBuildDir)" Condition=" '$(MySpecialWebTempBuildDir)' != '' "> 
    <Output TaskParameter="Value" PropertyName="TempBuildDir" /> 
    </CreateProperty> 
    <CreateProperty Value=".\TempBuildDir\" Condition=" '$(MySpecialWebTempBuildDir)' == '' "> 
    <Output TaskParameter="Value" PropertyName="TempBuildDir" /> 
    </CreateProperty> 

<CreateProperty Value=".\TempBuildDir\"> 
    <Output TaskParameter="Value" PropertyName="TempBuildDir" /> 
    </CreateProperty> 

から_PrepareForBuildの対象に以下の行を変更した場合

次に、あなたのプロジェクトファイルにMySpecialWebTempBuildDirプロパティを設定し、それをオーバーライドする必要があります。 MySpecialWebTempBuildDirを設定しない場合、以前と同じようにTempBuildDirが使用されます。

Web配置パッケージの更新をインストールすると、変更が上書きされます。

1

別の解決策は、次のようにWebデプロイメントプロジェクトの "BeforeBuild" ターゲットのコメントを解除し、上書きすることです:

<Target Name="BeforeBuild"> 
<CreateProperty Value=".\TempBuildDirDebug\" Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <Output TaskParameter="Value" PropertyName="TempBuildDir" /> 
</CreateProperty> 
<CreateProperty Value=".\TempBuildDirRelease\" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <Output TaskParameter="Value" PropertyName="TempBuildDir" /> 
</CreateProperty> 

関連する問題