如何更改WebProjectOutputDir的默认位置?

Mat*_*ord 8 msbuild web-applications visual-studio

根据每个项目,是否有人知道您是否可以在Visual Studio中设置WebProjectOutputDir.我想能够拥有它,以便当我点击Ctrl+ Shift+ B它自动将我的web项目构建到特定目录,但我还需要能够在我的构建脚本中覆盖它.

Say*_*imi 16

根据定义目标的方式以及如何处理和属性来正确地执行此操作是不必要的尴尬.Microsoft.WebApplications.targets_CopyWebApplicationMicrosoft.Common.targetsOutDirOutputPath

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

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

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

Microsoft.WebApplications.targets将覆盖WebProjectOutputDir在import语句之前声明的任何声明.因此它必须追随.

还内侧Microsoft.WebApplications.targets_CopyWebApplication定义如下:

<Target Name="_CopyWebApplication" Condition="'$(OutDir)' != '$(OutputPath)'" >
  ....
</Target>
Run Code Online (Sandbox Code Playgroud)

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

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


小智 6

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

错误 MSB4044:未为“KillProcess”任务指定所需参数“ImagePath”的值

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

    ...
    <WebProjectOutputDir>.\</WebProjectOutputDir>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

问题解决了。

  • 是时候有人实际发布了“丢失”的 WebProjectOutputDir 变量的解决方案! (2认同)