Есть ли способ включить сборку, на которую ссылается Unity, при использовании веб-сайта публикации? - PullRequest
3 голосов
/ 02 сентября 2011

Я использую шаблон репозитория и Unity для управления зависимостями от моих конкретных объектов репозитория. Само по себе это не проблема, однако я сталкиваюсь с проблемой при использовании публикации сайта как в VS, так и в процессе сборки TFS.

Я полагаю, что проблема вызвана тем фактом, что, хотя в моем приложении упоминается проект, который содержит конкретные объекты репозитория, содержащиеся в нем классы никогда не используются напрямую. Это потому, что я использую Unity для создания экземпляров конкретных объектов во время выполнения, используя конфигурацию Unity, хранящуюся в моем web.config.

Проект репозитория компилируется, когда и включается в выходные данные при сборке, но когда веб-сайт публикации используется в VS VS TFS, сборка репозитория отсутствует. Поэтому, когда веб-приложение развернуто на веб-сервере, его невозможно использовать, так как вас приветствует ошибка:

Указанное имя сборки или кодовая база недопустимы. (Исключение из HRESULT: 0x80131047)

Это потому, что Unity не может найти отсутствующую сборку, как вы ожидаете.

Итак, мой конкретный вопрос: Есть ли способ гарантировать, что сборка репозитория будет скопирована в вывод непосредственно при публикации сайта в VS и TFS без непосредственного использования одного из конкретных классов в проекте?

1 Ответ

1 голос
/ 05 сентября 2011

Итак, покопавшись, я нашел решение своей проблемы.Это решение устраняет проблему только при сборке с TFS, но, честно говоря, с непрерывной интеграцией. Меня не беспокоит публикация из VS.

Мое вдохновение пришло из ответа Mike Hadlow

Какой лучший способ заставить TFS выводить каждый проект в свой собственный каталог?

В основном решение состоит в том, чтобы изменить сценарий сборки для веб-проекта так, чтобы он копировалотсутствует сборка в выходной папке сайта публикации.

Вот что я сделал:

  1. Я щелкнул правой кнопкой мыши по своему веб-проекту в обозревателе решений и нажал «Выгрузить проект».
  2. Затем я щелкнул правой кнопкой мыши по незагруженному проекту и нажал «Редактировать» [Имя проекта] '
  3. Прокручивая вправо до нижней части файла, я обнаружил следующие комментарииout target target:

  4. Я изменил это добавление команды для копирования отсутствующей сборки:

    [Отсутствует имя сборки] " DestinationFolder = "$ (OutDir) _PublishedWebsites \ $ (MSBuildProjectName) \ bin" SkipUnchangedFiles= "true" />

  5. Теперь при построении решения в TFS отсутствующая сборка включается в папку bin выходных данных опубликованного сайта.

Это решение можно использовать для копирования любого другого отсутствующего содержимого в выходные данные опубликованного веб-сайта.Поскольку файлы, которые вы хотите скопировать, вероятно, будут разными для каждого проекта, делать это таким образом, вероятно, является наилучшим вариантом.Однако я думаю о создании пользовательской версии Microsoft.WebApplication.targets, которая копирует минимизированные файлы CSS и скрипты.

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