У меня проблема с использованием MSBuild и InstallShield на Win 2008 Server x64. Я пытался собрать проект InstallShield с помощью задачи MSBuild, которую предоставила команда InstallShield, и они хорошо работают, если я запускаю msbuild из C: \ Windows \ Microsoft.NET \ Framework \ 3.5 \, но когда я пытаюсь запустить его из C: \ Windows \ Microsoft. NET \ Framework 64 \ 3.5 \ Я получил ошибку:
«InstallShield.Tasks.InstallShield»
задача не может быть загружена из
сборка c: \ Program Files
(X86) \ MSBUILD \ InstallShield \ 2009 \ InstallShield.Tasks.dll.
Не удалось загрузить файл или сборку
'file: /// c: \ Program Files
(X86) \ MSBUILD \ InstallShield \ 2009 \ InstallShield.Tasks.dll»
или одна из его зависимостей. Попытка
был сделан, чтобы загрузить программу с
неверный формат. Подтвердите, что
декларация правильная,
и что сборка и все ее
доступны зависимости.
И будет нормально использовать «обычный» путь Framework вместо пути x64, но, к сожалению, мне нужно использовать MSBUILD программно, используя его движок,
и он возвращает только 2 набора инструментов, один для 2.0 версии Framework и один для 3.5. Но оба находятся в папке Framework64 ... Я попытался добавить свой собственный набор инструментов с путем к «обычному» каталогу Framework. Я попытался сделать это через реестр и программно, но это не сработало - DefaultToolsVersion был установлен на мое собственное значение, Path обращается к Framework, Toolset с моей версией был добавлен в коллекцию toolsets. Но по какой-то причине я все еще получаю то же сообщение ,
Код, являющийся проектом сборки:
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 .... Но может быть, есть другое решение?