2010-02-26 297 views
7

有没有人知道,在每个项目的基础上,您是否可以在Visual Studio中设置WebProjectOutputDir。我希望能够拥有它,以便当我点击时Ctrl + Shift + B它自动将我的web项目构建到特定的目录,但我也需要能够在我的构建脚本中重写此项目。如何更改WebProjectOutputDir默认位置?

回答

16

这是不必要的尴尬正确地做到这一点基于该Microsoft.WebApplications.targets定义_CopyWebApplication目标,以及如何对待Microsoft.Common.targetsOutDirOutputPath属性的方式。

如果你想改变的是,在项目文件本身,那么你应该:

  • 申报财产WebProjectOutputDir进口到Microsoft.WebApplications.targets
  • 后导入前申报财产OutDirMicrosoft.WebApplications.targets

有几个原因为什么你必须这样做。

Microsoft.WebApplications.targets将覆盖WebProjectOutputDir的任何声明(如果它在导入语句之前声明)。所以它必须要来。

而且里面的Microsoft.WebApplications.targets_CopyWebApplication定义如下:

<Target Name="_CopyWebApplication" Condition="'$(OutDir)' != '$(OutputPath)'" > 
    .... 
</Target> 

考虑看看,你会看到,如果OutDirOutputPath等于相同值的目标将不会被执行的条件。您不能只更改OutputPath因为OutDir基于OutputPath,所以您必须更改OutDir并确保它在导入到该文件之前,因为其他属性是基于该属性构建的。

不太理想,但希望能帮到你。

+0

+1希望这是足够的信息,我可以找出涉及构建脚本而不是在项目文件级别的类似问题。 – Maslow 2010-07-27 15:45:33

0

我使用的Visual Studio时,为Mac,编译一个一把umbraco项目就遇到了这个。编译Rosyln时,等等。只有在溶液中的Web项目编制这些项目

Error MSB4044: The "KillProcess" task was not given a value for the required parameter "ImagePath"

它为WebProjectOutputDir返回空值,所以我编辑的web项目的csproj文件:建筑将发出以下错误手动添加以下内容到文件顶部的全局文件中:

... 
    <WebProjectOutputDir>.\</WebProjectOutputDir> 
</PropertyGroup> 

问题已解决。