Как использовать Microsoft.Build.BuildEngine для создания проекта Silverlight? - PullRequest
3 голосов
/ 06 августа 2009

Я использую Microsoft.Build.BuildEngine для создания ряда проектов. Проекты, которые не используют Silverlight, строятся правильно, в то время как проекты, которые используют Silverlight, не строят. Все эти проекты (Silverlight и не Silverlight) все прекрасно работают через Visual Studio 2008. Я получаю сообщение об ошибке:

ошибка CS0234: имя типа или пространства имен 'SilverlightControls' не существует в пространство имен 'System.Web.UI' (отсутствует ссылка на сборку?)

Я добавил System.Web.Silverlight в проект, который выполняет сборку с использованием Microsoft.Build.BuildEngine. Я могу видеть, что пространство имен в проекте также выполняет сборку (так что у проекта, выполняющего сборку, есть доступ к System.Web.UI).

Есть идеи, как мне избежать этой ошибки?


Увеличил детализацию сборки через VS2008 и сравнил с журналом, созданным из Microsoft.Build.BuildEngine. Похоже, что Microsoft.Build.BuildEngine создает такие строки:

Рассматривается как "c: \ Program Files \ Ссылочные сборки \ Microsoft \ Framework". \ v3.5 \ System.Web.Silverlight.dll ", но он не существует.

Его нет в этом месте, не так ли? На самом деле есть несколько мест, где он ищет эту DLL и не находит ее. Я добавил ссылку, щелкнув правой кнопкой мыши, добавить ссылку, .Net, добавить. Похоже, что на моей машине нет файла System.Web.Silverlight.dll (что странно, поскольку проект компилируется с использованием VS2008).

Сравнение, возможно, соответствующих разделов двух журналов: Microsoft.Build.BuildEngine

Для SearchPath "{GAC}". Считается "System.Web.Silverlight, версия = 2.0.5.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35, processorArchitecture = MSIL ", который не был найден в GAC.

Visual Studio 2008

System.Web.Silverlight, версия = 2.0.5.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35, процессор архитектуры = MSIL


Вручную добавил System.Web.Silverlight к пути, который искал Microsoft.Build.BuildEngine (скопировал его из выходного каталога, когда я собирал проект через VS2008). Это решило эту проблему, но теперь я получаю следующие ошибки в компонентах решения Silverlight:

C: \ Program Files \ MSBuild \ Microsoft \ Silverlight \ v2.0 \ Microsoft.Silverlight.Common.targets (95,9): ошибка: не установлен Silverlight 2 SDK установлен.

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 07 августа 2009

В приложении под управлением Microsoft.Build.BuildEngine я изменил тип сборки с Любой процессор на x86. Это теперь позволило приложению построить целевой объект, как и ожидалось.

1 голос
/ 06 августа 2009

То есть вы программно строите с использованием API MSBuild?

Может быть полезно добавить ILogger (например, который просто печатает на консоль) в engine.Loggers и сравнить вывод с окном вывода в VS (после установки, например, 'tools \ options \ project & solutions \ build & build & запустить \ msbuild output verbosity 'to verbose) ... кажется, что среда как-то заставляет сборки разрешать по-разному?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...