Не удалось загрузить файл или сборку "Microsoft.WindowsAzure.ServiceRuntime, версия = 1.8.0.0 при развертывании в облаке - программирование
Подтвердить что ты не робот

Не удалось загрузить файл или сборку "Microsoft.WindowsAzure.ServiceRuntime, версия = 1.8.0.0 при развертывании в облаке

У меня есть приложение MVC 4, которое работает нормально локально, но не работает с этим сообщением при развертывании в Azure:

[FileNotFoundException: Could not load file or assembly Microsoft.WindowsAzure.ServiceRuntime, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.] Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.GetDefaultStartupInfoForCurrentRoleInstance() +0 Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener..ctor() +40

Я убедился, что ссылаюсь на Microsoft.WindowsAzure.ServiceRuntime версии 1.8 и настроил его на локальный.

4b9b3361

Ответ 1

Итак, из вашего скриншота похоже, что вы создали веб-сайт (который не является облачным сервисом или веб-ролью). Сборка Microsoft.WindowsAzure.Diagnostics и Microsoft.WindowsAzure.ServiceRuntime не может использоваться на веб-сайте.

Если вы хотите создать веб-роль, откройте Visual Studio > Файл > Новый проект > Облако > Служебная служба Windows Azure > Добавить веб-роль MVC > OK. Как только вы закончите, щелкните правой кнопкой мыши проект Azure и выберите Опубликовать. Это позволит вам создать новую облачную службу, которая будет содержать вашу веб-роль. И если вы создадите свой проект таким образом, вы сможете использовать сборки Microsoft.WindowsAzure.Diagnostics и Microsoft.WindowsAzure.ServiceRuntime.

Ответ 2

Проверьте ссылки в своем проекте и убедитесь, что все ссылки Azure отмечены Copy Local = True. Кроме того, поскольку приложение ищет Runtime версии 1.8, вы, очевидно, используете хотя бы одну сборку из SDK 1.8 - C:\Program Files\Microsoft SDKs\Windows Azure.NET SDK\2012-10\ref... ПРИМЕЧАНИЕ.: 2012-10. Затем проверьте используемые версии ссылок:

  • Диагностика: 1.8.0.0
  • Время выполнения: 1.8.0.0

Эта сборка неправильного совпадения обычно происходит, потому что у вас разные версии SDK, на которые ссылаются, и/или ваш ref не отмечен. copy local = true.

Что касается таксономии Azure, есть веб-сайты (на портале под веб-сайтами), и есть облачные сервисы, которые могут иметь либо WebRoles (веб-сайты, wcf-сервисы), либо WorkerRoles (бэкэнд-обработка).

Для CloudServices семейство ОС и гостевые ОС указаны в файле ServiceConfiguration.cscfg в элементе "ServiceConfiguration":

<ServiceConfiguration serviceName="MyWebRole" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="3" osVersion="*" schemaVersion="2012-10.1.8">

osFamily 2 = Сервер 2008R2 и 3 = Сервер 2012. osVersion указывает гостевой экран и почти всегда будет "*" для последней версии.

Если все остальное не работает, и правильная DLL выведена в корзину, попробуйте добавить перенаправление связывания сборки в файл web.config:

<dependentAssembly>
  <assemblyIdentity name="Microsoft.WindowsAzure.ServiceRuntime" publicKeyToken="31bf3856ad364e35" />
  <bindingRedirect oldVersion="1.0.0.0-1.8.0.0" newVersion="1.8.0.0" />
</dependentAssembly>

Ответ 3

Так как вы получаете сообщение об ошибке при попытке запустить DiagnosticMonitor, можете ли вы проверить, что вы ссылаетесь на версию версии Microsoft.WindowsAzure.Diagnostics:

Он должен быть расположен в папке C:\Program Files\Microsoft SDK\Windows Azure.NET SDK\2012-06\ref.