我在一个项目中使用了wix,我有一个特殊的需求:
使用c#中的MSBuild构建wixproj。
为此,我将MSBuild api用于以下用途:
静态void Main(string [] args) { 字符串toolsPath = ToolLocationHelper.GetPathToBuildToolsFile(“ msbuild.exe”,ToolLocationHelper.CurrentToolsVersion); ProjectCollection projectCollection =新的ProjectCollection(); projectCollection.AddToolset(新工具集(ToolLocationHelper.CurrentToolsVersion,Path.GetDirectoryName(toolsPath),projectCollection,string.Empty)); 项目项目= projectCollection.LoadProject(“ TestWix.wixproj”); var result = project.Build(new ConsoleLogger()); Console.ReadKey(); }
我收到此错误:
C:\ Program Files(x86)\ MSBuild \ Microsoft \ WiX \ v3.x \ wix2010.targets(1988,5):错误MSB4127:无法从程序集“ C:\”实例化“ GenerateCompileWithObjectPath”任务程序文件(x86)\ WiX Toolset v3.11 \ bin \ WixTasks.dll”。请验证任务程序集是使用与计算机上安装的版本相同的Microsoft.Build.Framework程序集构建的,并且您的主机应用程序没有缺少Microsoft.Build.Framework的绑定重定向。无法将类型为“ Microsoft.Tools.WindowsInstallerXml.Build.Tasks.GenerateCompileWithObjectPath”的对象转换为类型为“ Microsoft.Build.Framework.ITask”的对象。
但是当我使用msbuild命令行时,它工作正常。
请问您有什么主意吗?
谢谢。