На веб-сайте Azure отсутствует msshrtmi при сборке и развертывании из TFS
Я пытаюсь выполнить развертывание на веб-сайтах Azure (предварительный просмотр) из TFS (предварительный просмотр). Сборка работает, и веб-сайт развернут, но когда мой код пытается получить доступ к Azure RoleEnvironment, веб-сайт выдает следующее исключение:
Не удалось загрузить файл или сборку 'msshrtmi, версия =1.7.0.0, культура = нейтральная, PublicKeyToken=31bf3856ad364e35' или одна из ее зависимостей. Система не может найти указанный файл.
Я попробовал все решения, предложенные в следующей теме, но не повезло. Я думаю, что это связано с TFS.
Я проверил это:
- Переустановленный Azure SDK и инструменты
- Удалены все PlatformTarget из файлов проекта
- Написал событие после сборки, чтобы удалить msshrtmi.dll
- Направил все сборки на x64 (-> провалил все модульные тесты на TFS, похоже, x86, даже если разрешить x64 в.testsettings)
У меня закончились идеи, как решить эту проблему? У кого-нибудь есть предложения?
3 ответа
Я сталкивался с подобной проблемой в более ранних версиях SDK при выполнении некоторых сборок. Мое решение не было полностью интуитивным. Если я просматриваю каждую из своих конфигураций сборки и выполняю "Чистое решение", то возвращаюсь к конфигурации сборки, которая мне действительно нужна, и создание сборки устраняет эту проблему.
У меня нет объяснения, почему это работает, но после нескольких часов, потянув за волосы, я был просто счастлив найти решение.
После 7 часов умопомрачительных проб и ошибок я наконец исправил это. Проблема заключалась в наличии инструментов Microsoft Windows Azure на июнь 2012 года вместе с инструментами Microsoft Windows Azure на ноябрь 2011 года.
Шаги, которые я выполнил:
- Удалите инструменты Microsoft Windows Azure для Visual Studio 2012 RC - июнь 2012 г.
- Установите инструменты Microsoft Windows Azure для Visual Studio 2010 - выпуск за июнь 2012 г.
- Удалите инструменты Microsoft Windows Azure для Visual Studio 2010 - выпуск за ноябрь 2011 г.
- Теперь заново откройте проект, который пытался развернуть
- Visual Studio попытается преобразовать все двоичные файлы ноября 2011 года в выпуск июня 2012 года
- Как только это будет успешно сделано, перепроверьте все ссылки Microsoft.WindowsAzure, чтобы увидеть, если они версии 1.7.0.0
- Опубликовать в Azure!
Надеюсь, это кому-нибудь поможет, я так устала, что не буду кодировать следующие 24 часа.
У меня была та же проблема, когда он всегда искал 32-битную версию msshrtmi в 64-битном приложении, вызывая такую ошибку. Я так и не узнал почему, но я создал задачу сборки в своем проекте, которая удаляла бы 32-битный файл, который нарушал работу, из корзины, так что 64-битная была найдена в GAC.