如何更改WebProjectOutputDir的默认位置?

时间:2010-02-26 16:16:33

标签: visual-studio web-applications msbuild

是否有人知道,您是否可以在每个项目中在Visual Studio中设置WebProjectOutputDir。我希望能够拥有它,以便当我按 Ctrl + Shift + B 时,它会自动将我的Web项目构建到特定目录,但我还需要能够在构建脚本中覆盖它。

2 个答案:

答案 0 :(得分:16)

不必要的尴尬 根据Microsoft.WebApplications.targets定义_CopyWebApplication目标的方式以及Microsoft.Common.targets的方式正确执行此操作处理OutDirOutputPath属性。

如果你想在项目文件中更改它,那么你应该:

  • 导入WebProjectOutputDir
  • 后声明属性Microsoft.WebApplications.targets
  • 在导入OutDir
  • 之前声明属性Microsoft.WebApplications.targets

您必须这样做有几个原因。

Microsoft.WebApplications.targets将覆盖WebProjectOutputDir的任何声明(如果在import语句之前声明它)。因此必须追求它。

同样在Microsoft.WebApplications.targets内,_CopyWebApplication的定义如下:

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

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

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

答案 1 :(得分:4)

我在使用 Visual Studio for Mac ,编译 Umbraco 项目时遇到了这个问题。 Building会发出以下错误:

  

错误MSB4044:“KillProcess”任务没有给出值   必需参数“ImagePath”

在编译Rosyln等时,它返回了 WebProjectOutputDir 的空值。只有解决方案中的Web项目正在编译这些项目,所以我手动编辑了web项目csproj文件,并添加了以下内容到文件顶部的全局:

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

问题解决了。