Соответствующие зависимости (DLL) не копируются при развертывании с использованием Visual Studio 2013

В одном из развертываемых мной веб-заданий я ссылаюсь на одну из моих библиотек классов (Core), которая занимается выполнением какого-либо процесса (в данном случае отправкой электронного письма с использованием SendGrid).

Когда я развернул свои веб-задания вручную (загрузив ZIP-файл), все работало нормально. Я очистил развертывание и повторно развернул его с помощью Visual Studio 2013, и у веб-задания начались проблемы. Основной проблемой здесь является то, что он ищет dll SendGrid, на который ссылается моя библиотека классов Core, а не мое консольное приложение, и он не завершает его, выдавая следующую ошибку:

"Необработанное исключение: System.IO.FileLoadException: не удалось загрузить файл или сборку" SendGrid.... Version=4.5.0.0, Culture= нейтральный, PublicKeyToken=30ad4fe6b2a6aeed "или одну из ее зависимостей. Определение манифеста обнаруженной сборки не совпадает ссылка на сборку. (Исключение из HRESULT: 0x80131040)

Я зашел на сайт по FTP и обнаружил, что, по сути, сборка SendGrid не там, где находится мой WebJob.

Мой вопрос: есть ли способ заставить эти зависимости копироваться в нужный каталог при развертывании с использованием VS 2013?

Спасибо,

3 ответа

Решение

Я являюсь членом команды, которая выпустила инструментарий WebJobs в обновлении Summer 2013, и я могу сообщить вам, что мы знаем об этой проблеме и проверили исправление для ее следующего обновления, которое выйдет скоро. Тем временем, обходной путь должен установить ссылки на сборки для необходимых вам сборок - только пакеты NuGet решат эту проблему - и переиздать. На самом деле мы используем пакет NuGet для логики развертывания WebJobs в VS. После того, как мы выпустим обновление, мы также выпустим NuGet (который сейчас проходит финальное тестирование), так что пользователям обновлений Summer и Fall будет устранена эта проблема.

Похоже, что это известная ошибка от Microsoft, и, к сожалению, они не слишком хотят ее исправить. Возможные решения:

  1. Вы можете вручную скопировать его поверх
  2. Создайте событие сборки, чтобы скопировать его поверх
  3. Кажется, некоторым людям повезло, добавив что-то вроде этого var t = typeof(ThirdParty.SomeClass);

Решил мою проблему, выполнив следующее.

  1. Установите свои сборки, на которые есть ссылки, "Копировать локально -> Истина"
  2. Установите для конфигурации вашего решения значение "Release"
Другие вопросы по тегам