使用Mono的Microsoft.VisualStudio.Web.targets?

时间:2015-02-27 20:54:40

标签: asp.net msbuild mono xbuild

尝试在基于Mono的CI版本中使用Microsoft.VisualStudio.Web.Publishing.targets中的TransformWebConfigPackage任务时,我依赖于MSBuild.Microsoft.VisualStudio.Web.target NuGet打包并更新我的项目文件以导入它。该构建与MSBuild一起正常工作,但xbuild无法处理目标文件:

  

无法解析条件"' $(EnableWebPublishProfileFile)' ==' true'并且' $(WebPublishProfileFile)' !=''并存在($(WebPublishProfileFile))" :期望在条件"' $(EnableWebPublishProfileFile)' ==' true'并且' $(WebPublishProfileFile)' !=''并存在($(WebPublishProfileFile))"。在' $'。

之后缺少开放式的parantheses

实际上,当我明确尝试导入Microsoft.Web.Publishing.targets时,这是错误;它通常通过导入Microsoft.WebApplication.targets传递导入。我认为当我导入后者时,xbuild失败(默默地)加载前者,因为我只是得到错误:

  

错误:目标名为' TransformWebConfig'在项目中找不到。

同样,这个版本在MSBuild中运行良好。项目文件具有以下Import指令: <Import Project="$(SolutionDir)\packages\MSBuild.Microsoft.VisualStudio.Web.targets\tools\VSToolsPath\WebApplications\Microsoft.WebApplication.targets" />

1 个答案:

答案 0 :(得分:4)

xbuild条件解析逻辑中似乎确实存在bug。看起来这可以在Exists

中围绕变量用单引号解决
Exists('$(WebPublishProfileFile)')