我在 Win 2008 Server x64 上使用 MSBuild 和 InstallShield 时遇到问题。我尝试使用 InstallShield 团队提供的 MSBuild 任务构建 InstallShield 项目,如果我从 C:\Windows\Microsoft.NET\Framework\3.5\ 运行 msbuild,它们运行良好,但是当我尝试从 C:\Windows\Microsoft 运行它时。 NET\Framework 64 \3.5\ 我有一个错误:
无法从程序集 c:\Program Files (x86)\MSBUILD\InstallShield\2009\InstallShield.Tasks.dll 加载“InstallShield.Tasks.InstallShield”任务。无法加载文件或程序集 'file:///c:\Program Files (x86)\MSBUILD\InstallShield\2009\InstallShield.Tasks.dll' 或其依赖项之一。试图加载格式不正确的程序。确认声明正确,并且程序集及其所有依赖项都可用。
并且可以使用“常规”框架路径而不是 x64 路径,但不幸的是我需要使用 MSBUILD 以编程方式使用它的引擎,它只返回 2 个工具集,一个用于 2.0 版本的框架,一个用于 3.5 版本。但两者都位于 Framework64 路径下...我尝试使用“通常”框架目录的路径添加我自己的工具集。我尝试通过注册表和编程方式执行此操作,但它不起作用 - DefaultToolsVersion 设置为我自己的值,路径查看框架,带有我的版本的工具集已添加到工具集集合中。但由于某种原因,我仍然收到相同的消息. 构建项目的代码:
Project project = new Project(engine);
//Toolset customToolset = new Toolset("4.0", @"c:\windows\Microsoft.Net\Framework\v3.5\");
//engine.Toolsets.Add(customToolset);
//engine.DefaultToolsVersion = "4.0";
project.Load(args[0]);
MSBuildLogger logger = new MSBuildLogger();
engine.RegisterLogger(logger);
bool res = engine.BuildProjectFile(args[0]);
任何人都有想法我应该怎么做才能让它工作?
看来我解决了为 x86 平台而不是 AnyCPU 编译我的应用程序的问题......但可能还有另一种解决方案吗?