![](/img/trans.png)
[英]Starting a program with MSBuild/Web Deployment Project and not waiting for it
[英]Web Deployment Project / MSBuild - TempBuildDir
Microsoft.WebDeployment.targets文件位于C:\\ Program Files \\ MSBuild \\ Microsoft \\ WebDeployment \\ v9.0或v10.0目录中,该文件在_PrepareForBuild目标中定义了TempBuildDir属性。
由于他们使用CreateProperty任务设置TempBuildDir,因此即使该属性已经存在,也始终将其设置为硬编码值。 这可以消除有人使用TempBuildDir属性进行其他操作并弄乱了构建的问题。
您将必须更改Microsoft.WebDeployment.targets文件以使用其他临时目录。
警告:以下内容正在更改您无法控制的文件,因此使用风险自负。
如果要更改_PrepareForBuild目标中的以下行,请从
<CreateProperty Value=".\TempBuildDir\">
<Output TaskParameter="Value" PropertyName="TempBuildDir" />
</CreateProperty>
至
<CreateProperty Value="$(MySpecialWebTempBuildDir)" Condition=" '$(MySpecialWebTempBuildDir)' != '' ">
<Output TaskParameter="Value" PropertyName="TempBuildDir" />
</CreateProperty>
<CreateProperty Value=".\TempBuildDir\" Condition=" '$(MySpecialWebTempBuildDir)' == '' ">
<Output TaskParameter="Value" PropertyName="TempBuildDir" />
</CreateProperty>
然后在您的项目文件中设置MySpecialWebTempBuildDir属性,它应该覆盖它。 如果未设置MySpecialWebTempBuildDir,则它将像以前一样使用TempBuildDir。
如果您将更新安装到Web部署程序包,您的更改将被覆盖。
另一个解决方案是取消注释并覆盖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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.