我昨天安装了 VS2010 网络发布更新,现在每当我尝试加载 WiX 设置项目(在解决方案资源管理器中都显示为已卸载)时,我都会收到错误消息:
未找到导入的项目“PROJECTNAME.wpp.targets”。确认声明中的路径正确,并且该文件存在于磁盘上。C:\Program Files\MSBuild\Microsoft\VisualStudio\v10.5\Web\Microsoft.Web.Publishing.targets
其中 PROJECTNAME 是我的设置 wixproj 文件的路径,没有 .wixproj 扩展名。我已经检查了项目文件,并且在任何地方都没有对 wpp.targets 文件的引用。我决定尝试在该位置创建一个空白目标文件,因此添加了一个包含以下内容的文件:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>
但是得到了完全相同的错误 - 尽管文件在那里,但未找到异常!
然后我深入研究了 Microsoft.Web.Publishing.targets 文件并查看了任何“.wpp.targets”文本,这给了我这个:
<PropertyGroup Condition="'$(EnableWebPublishProfileFile)'=='true' And
'$(WebPublishProfileFile)' != '' And Exists($(WebPublishProfileFile)) ">
<WebPublishProfileCustomizeTargetFile Condition="'$(WebPublishProfileCustomizeTargetFile)'==''">
$([System.IO.Path]::ChangeExtension($(WebPublishProfileFile), '.wpp.targets'))
</WebPublishProfileCustomizeTargetFile>
...
因此,这看起来是在设置 PROJECTNAME.wpp.targets 的文件名,但前提是 EnableWebPublishProfileFile 属性设置为 true。我将此添加到我的 wixproj 文件的主要属性组中:
<EnableWebPublishProfileFile>False</EnableWebPublishProfileFile>
但同样,它对错误没有任何影响。我现在没有想法了!
进一步更新
我一直试图在一个空白项目上回购这个(到目前为止没有成功),并且混乱已经将错误缩小到 Microsoft.Web.Publishing.targets 文件中的这一行(186):
<Import Project="$(WebPublishPipelineCustomizeTargetFile)"
Condition="'$(WebPublishPipelineCustomizeTargetFile)' != ''"/>
这是在文件顶部设置的:
<WebPublishPipelineCustomizeTargetFile
Condition="'$(WebPublishPipelineCustomizeTargetFile)'==''">
$(WebPublishPipelineProjectDirectory)\*.wpp.targets
</WebPublishPipelineCustomizeTargetFile>
我不确定这是如何更改为 PROJECTNAME.wpp.targets 的?
我尝试在我的项目文件中覆盖它,但再一次,它根本没有区别。
接下来,我在目标文件的行中添加了一个 Exists() 条件,现在一些项目正在运行,而另一些则没有,而是失败(在构建时)并出现错误:
“ImportParametersFile”任务不支持“DisableEscapeMSBuildVariable”参数。验证该参数是否存在于任务中,并且它是一个可设置的公共实例属性。
我的旅程还在继续……