Есть ли обходной путь для WAT080: не удалось найти Microsoft Azure SDK - PullRequest
0 голосов
/ 24 сентября 2018

Я создаю проект, который требует установки Azure SDK.К сожалению, я не могу установить SDK, потому что установщик VSTools не работает в контейнере Docker.Я пытаюсь воссоздать шаги, которые делает установщик, чтобы проект считал, что SDK установлен правильно.Я получаю сообщение об ошибке:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ Windows Azure Tools \ 2.9 \ Microsoft.WindowsAzure.targets (1093,5): ошибка: WAT080: не удалось найти Microsoft Azure SDK.Пожалуйста, убедитесь, что Microsoft Azure SDK v2.9 установлен.[C: \ BuildAgent \ work \ da35ef67e7dea9a9 \ EMCloudService \ EMCloudService.ccproj]

Строка 1093 в файле .targets:

  <Target
      Name="VerifySDKInstallation"> // <---- Line 1093

    <WATMessage Condition=" !Exists('$(ServiceHostingSDKInstallDir)') or
                            !Exists('$(ServiceHostingSDKBinDir)') or
                            !Exists('$(ServiceHostingSDKTaskPath)') "
                Type="Error"
                Code="WAT080"
                Arguments="$(ActiveAzureSdkVersion)" />

    <WATMessage Condition=" !Exists('$(AzureClientLibInstallDir)') or
                            !Exists('$(AzureClientLibToolsRefDir)') or
                            !Exists('$(StorageClientAssemblyFullPath)') "
                Type="Error"
                Code="WAT081"
                Arguments="$(ActiveAzureClientLibVersion)" />

  </Target>

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

<ServiceHostingSDKInstallDir Condition=" '$(ServiceHostingSDKInstallDir)' == '' ">$([MSBuild]::GetRegistryValueFromView('$(ServiceHostingSDKRegistryKey)', 'InstallPath', null, RegistryView.Registry32))</ServiceHostingSDKInstallDir>

Итак, в основном это выглядит в реестре.Я скопировал это значение с рабочей машины, и оно имеет значение «C: \ Program Files \ Microsoft SDKs \ Azure.NET SDK \»

Я скопировал этот каталог поверх.Следующим является ServiceHostingSDKBinDir, который определен как:

<ServiceHostingSDKBinDir     Condition=" '$(ServiceHostingSDKBinDir)' == '' ">$(ServiceHostingSDKInstallDir)bin\</ServiceHostingSDKBinDir>

Так что все должно быть в порядке, так как ServiceHostingSDKInstallDir существует.И, наконец, ServiceHostingSDKTaskPath, то есть:

<ServiceHostingSDKTaskPath   Condition=" '$(ServiceHostingSDKTaskPath)' == '' ">$(ServiceHostingSDKBinDir)Microsoft.ServiceHosting.Tools.MSBuildTasks.dll</ServiceHostingSDKTaskPath>

Так что, похоже, мне просто нужно иметь возможность скопировать в каталог "C: \ Program Files \ Microsoft SDKs \ Azure.NET SDK \", передатьв правильных параметрах для ActiveAzureSdkVersion и ServiceHostingSDKInstallDir, и все должно работать:

msbuild EM.sln `
  /p:ActiveAzureSdkVersion="2.9" `
  /p:ServiceHostingSDKInstallDir="C:/Program Files/Microsoft SDKs/Azure/.NET SDK/"

Тем не менее, я все еще получаю ту же ошибку.Может кто-нибудь придумать что-нибудь еще, что мне нужно скопировать или передать?Спасибо!

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

понял это.* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *, Стр. 1093 *. * * * * * * * * * * * * * *

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Пример: *1004*

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

ServiceHostingSDKInstallDir = C:/Program Files/Microsoft SDKs/Azure/.NET SDK/
ServiceHostingSDKBinDir = C:/Program Files/Microsoft SDKs/Azure/.NET SDK/bin\
ServiceHostingSDKTaskPath = C:/Program Files/Microsoft SDKs/Azure/.NET SDK/bin\Microsoft.ServiceHosting.Tools.MSBuildTasks.dll

Итак, путь C:/Program Files/Microsoft SDKs/Azure/.NET SDK/bin\ не существует, потому что отсутствует номер версии.Оказывается, параметр ActiveAzureSdkVersion используется только тогда, когда путь получен через реестр, поэтому передача его в моем случае не имеет смысла.Вместо этого мне нужно передать полный путь к SDK, включая версию:

MSBuild.exe. \ EM.sln / p: ServiceHostingSDKInstallDir = "C: / Program Files / Microsoft SDKs /Azure / .NET SDK / v2.9 / "

Надеюсь, это кому-нибудь поможет!

0 голосов
/ 25 сентября 2018

Есть ли обходной путь для WAT080: не удалось найти Microsoft Azure SDK

В соответствии с файлом Microsoft.WindowsAzure.targets(1093,5) мы можем получить следующий фрагмент кода:

  <PropertyGroup>
    <ActiveAzureSdkVersion Condition=" '$(ActiveAzureSdkVersion)' == '' ">$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Azure Tools for Microsoft Visual Studio\15.0\v2.9', 'ActiveWindowsAzureVersion', null, RegistryView.Registry32))</ActiveAzureSdkVersion>
    <!-- Sdk reversion -->
    <ActiveAzureSdkVersion Condition=" '$(ActiveAzureSdkVersion)' == '' ">2.9</ActiveAzureSdkVersion>
    <ServiceHostingSDKRegistryKey>HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\ServiceHosting\v$(ActiveAzureSdkVersion)</ServiceHostingSDKRegistryKey>
    <ServiceHostingSDKInstallDir Condition=" '$(ServiceHostingSDKInstallDir)' == '' ">$([MSBuild]::GetRegistryValueFromView('$(ServiceHostingSDKRegistryKey)', 'InstallPath', null, RegistryView.Registry32))</ServiceHostingSDKInstallDir>

    <!-- Ensure ServiceHostingSDKInstallDir has a trailing slash, so it can be concatenated -->
    <ServiceHostingSDKInstallDir Condition=" '$(ServiceHostingSDKInstallDir)' != '' and !HasTrailingSlash('$(ServiceHostingSDKInstallDir)')">$(ServiceHostingSDKInstallDir)\</ServiceHostingSDKInstallDir>

    ...
    ...
  </PropertyGroup>

Мы могли бы узнать значение параметра ServiceHostingSDKRegistryKey:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\ServiceHosting\v$(ActiveAzureSdkVersion)

Просто узнать значение $(ActiveAzureSdkVersion) равно 2.9 , поэтому значениеServiceHostingSDKInstallDir должно быть значением InstallPath параметра ServiceHostingSDKRegistryKey.

Затем , мы открываем regedit и переключаем путь к указанному выше ключу реестра:

enter image description here

Значение InstallPath равно C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.9\, а не старое значение C:\Program Files\Microsoft SDKs\Azure.NET SDK\.

Кроме того, вы можетенайдите расположение этого Azure SDK также C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.9, вы указали его в командной строке с параметром /p:ServiceHostingSDKInstallDir.

Итак, причина этой проблемы в том, что значение ключа реестра неверно.Хотя вы перезаписываете его с помощью /p:ServiceHostingSDKInstallDir, при импорте Microsoft.WindowsAzure.targets в файл проекта и выполнении цели VerifySDKInstallation, похоже, MSBuild / Visual Studio вызовет параметр $ (ServiceHostingSDKInstallDir) в файле .targets на основепо принципу близости.

Обходной путь для этой проблемы: вы можете попытаться изменить ключ реестра на правильный путь или, если вы не хотите изменять реестр, вы можете попытаться скопировать папку SDK встарый путь C:\Program Files\Microsoft SDKs\Azure.NET SDK\.

Надеюсь, это поможет.

...