相同的wixproj文件仅适用于VS 2012 IDE,但不适用于VS命令提示符

时间:2013-02-09 00:07:31

标签: visual-studio-2010 msbuild wix msbuild-4.0 wix3.7

我正在尝试这个page的步骤。我已将wix二进制文件安装在本地计算机上的文件夹中。

所以我得到了一个由wix VS 2010插件创建的wix安装程序项目。我可以使用VS 2010 IDE来构建它并生成msi文件,但是在VS命令提示符下我不能对Msbuild做同样的事情。当Msbuild尝试编译时,有一个错误抱怨找不到candle.exe:

  

未处理的异常:System.IO.FileLoadException:无法加载文件或程序集'file:/// C:\ MyFolder \ Wix \ candle.exe'或其依赖项之一。不支持操作。 (HRESULT异常:0x80131515)---> System.NotSupportedException:尝试从网络位置加载程序集,这会导致程序集在以前版本的.NET Framework中被沙箱化。此版本的.NET Framework默认情况下不启用CAS策略,因此此负载可能很危险。如果此负载不是用于沙盒装配,请启用loadFromRemoteSources开关。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=155569

我很确定exe是在正确的位置,因为VS IDE可以找到它。我想知道Msbuild我缺少什么?

谢谢!

2 个答案:

答案 0 :(得分:4)

我从这里找到答案:http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Error-in-candle-during-build-td7385947.html。 在解压缩二进制文件之前,右键单击zip文件,选择属性并从第一个选项卡中选择取消阻止。然后你正常解压缩它。

答案 1 :(得分:1)

根据您提供的page,在代码行中输入的路径将帮助MSBuild脚本识别WIX二进制文件。

<PropertyGroup>
        <WixToolPath>$(SourceCodeControlRoot)\wix\3.6.3220.0\</WixToolPath>
        <WixTargetsPath>$(WixToolPath)Wix.targets</WixTargetsPath>
        <WixTasksPath>$(WixToolPath)wixtasks.dll</WixTasksPath>
</PropertyGroup>

这里的重要引用如下:

  

WixTargetsPath属性值必须相对于.wixproj项目   使用它的文件。内部使用WixTasksPath属性   wix.targets加载WixTasks.dll

应根据解压缩文件的文件夹正确指定路径。否则有可能发生此错误。然后,该项目将从VS2010正常运行,因为它正在从WIX的安装位置提供WIX二进制文件。但是,MSBuild将引用您在上面代码行中提供的值。

那么,您能否为WixToolPathWixTargetsPathWixTasksPath提供您所提供的价值观。以及解压缩 wix36-binaries.zip wix37-binaries.zip 的路径。

这些信息可能有助于解决此问题,因此我也会更正此答案。

相关问题