如何更改WebProjectOutputDir的默认位置?

9

有人知道在Visual Studio中是否可以按项目设置WebProjectOutputDir吗?我希望能够在按下 Ctrl + Shift + B 时自动将我的Web项目构建到特定目录,但我也需要能够在我的构建脚本中覆盖此设置。

2个回答

16

根据 Microsoft.WebApplications.targets 定义的 _CopyWebApplication 目标和 Microsoft.Common.targets 处理 OutDirOutputPath 属性的方式,正确完成这项任务是不必要的麻烦。

如果您想要在项目文件中更改这个问题,那么您应该:

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

为什么要这样做有几个原因。

如果在导入语句之前声明了 WebProjectOutputDir 属性,则会被 Microsoft.WebApplications.targets 覆盖。因此,它必须在之后声明。

此外,在 Microsoft.WebApplications.targets 中,_CopyWebApplication 的定义如下:

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

看一下这个条件语句,你会发现如果OutDirOutputPath的值相等,那么目标不会被执行。你不能只是改变OutputPath,因为OutDir是基于OutputPath的,所以你必须改变OutDir并确保它在导入该文件之前,因为其他属性是基于该属性构建的。

虽然不是最理想的解决方案,但希望能对你有所帮助。


7
我在使用Visual Studio for Mac编译Umbraco项目时遇到了这个问题。编译时出现以下错误:
错误 MSB4044: "KillProcess"任务未为必需参数"ImagePath"提供值。
当编译Roslyn等内容时,它会返回空值给WebProjectOutputDir。因此,在解决方案中只有Web项目在编译这些项,所以我手动编辑了Web项目csproj文件,并在文件顶部的全局 中添加了以下内容:
    ...
    <WebProjectOutputDir>.\</WebProjectOutputDir>
</PropertyGroup>

问题已解决。

2
终于有人发布了“缺失”的WebProjectOutputDir变量的解决方案! - George
@T.S. 这行代码只是将一个合理的值分配给 WebProjectOutputDir 变量,由于某些原因,默认情况下该变量未设置。 - Lukas Juhrich
我不理解.\在项目文件中的位置或与任何东西的关系。 - T.S.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接