是否有人知道,您是否可以在每个项目中在Visual Studio中设置WebProjectOutputDir。我希望能够拥有它,以便当我按 Ctrl + Shift + B 时,它会自动将我的Web项目构建到特定目录,但我还需要能够在构建脚本中覆盖它。
答案 0 :(得分:16)
不必要的尴尬 根据Microsoft.WebApplications.targets
定义_CopyWebApplication
目标的方式以及Microsoft.Common.targets
的方式正确执行此操作处理OutDir
和OutputPath
属性。
如果你想在项目文件中更改它,那么你应该:
WebProjectOutputDir
Microsoft.WebApplications.targets
OutDir
Microsoft.WebApplications.targets
您必须这样做有几个原因。
Microsoft.WebApplications.targets
将覆盖WebProjectOutputDir
的任何声明(如果在import语句之前声明它)。因此必须追求它。
同样在Microsoft.WebApplications.targets
内,_CopyWebApplication
的定义如下:
<Target Name="_CopyWebApplication" Condition="'$(OutDir)' != '$(OutputPath)'" >
....
</Target>
如果OutDir
和OutputPath
等于相同的值,那么看一下条件就会看到目标不会被执行。您不能只更改OutputPath,因为OutDir
基于OutputPath
,因此您必须更改OutDir
并确保它在导入到该文件之前,因为其他属性是基于此构建的属性。
不太理想,但希望能帮到你。
答案 1 :(得分:4)
我在使用 Visual Studio for Mac ,编译 Umbraco 项目时遇到了这个问题。 Building会发出以下错误:
错误MSB4044:“KillProcess”任务没有给出值 必需参数“ImagePath”
在编译Rosyln等时,它返回了 WebProjectOutputDir 的空值。只有解决方案中的Web项目正在编译这些项目,所以我手动编辑了web项目csproj文件,并添加了以下内容到文件顶部的全局:
...
<WebProjectOutputDir>.\</WebProjectOutputDir>
</PropertyGroup>
问题解决了。