我正在构建一个需要安装 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/"
然而,我仍然得到同样的错误。谁能想到我需要复制或传递的其他任何内容?谢谢!