【问题标题】:Visual Studio can't create a docker imageVisual Studio 无法创建 docker 映像
【发布时间】:2018-05-21 11:34:21
【问题描述】:

我正在 Visual Studio 2017 Enterprise 中开发一个 .net 核心项目。 我在项目中添加了 Docker 支持,然后按 F5,出现此错误:

发送请求时出错

此错误发生在 Microsoft.VisualStudio.Docker.Compose.targets (327,5) 中。

寻求任何帮助!

更新

我发现 VS 正在尝试向 aka.ms 发送请求,这就是问题所在。 我试图让它在封闭的网络中工作,并且由于该请求,我无法在 VS 中启动它。我可以在命令行中使用

docker-compose

【问题讨论】:

  • 您能否补充一些细节:问题看起来无法解决。 docker-compose 是从命令行工作的吗?
  • 不,我收到此错误:无法加载源 api.nuget 的服务索引...我已将 NuGet.Config 更改为仅包含所需的存储库
  • 看起来像连接问题。这是 nuget.config 架构:docs.microsoft.com/en-us/nuget/schema/nuget-config-file。也许您也更改了 http_proxy,现在您无法访问 api.nuget.org? “dotnet restore”有效吗?
  • 我可以使用 docker-compose up 从命令行运行它,并且运行良好,但我仍然无法从 Visual Studio 运行它。我遇到了同样的错误...

标签: visual-studio docker asp.net-core-mvc .net-core docker-compose


【解决方案1】:

我找到了解决问题的方法。

当您尝试使用 docker 支持构建项目时,Visual Studio 会尝试从 aka.ms 下载名为 GetVsDbg.ps1 的文件。 所以要解决这个问题,您需要手动下载文件,并将其放在 %temp% 文件夹中。

之后,您需要注释掉最后一部分,即尝试从 vsdebugger.azureedge.net 下载一些 zip 的部分。 然后,您需要找到您的 vsdbg 版本(当您尝试构建您的 .net 核心项目时,您可以在 output->build 部分中找到它)并浏览到:

https://vsdebugger.azureedge.net/vsdbg-(Version)/vsdbg-linux-x64.zip

版本如下所示:15-1-11011-1。下载该 zip 文件后,将其解压缩到 C:\Users(Username)\vsdbg。

确保删除该项目的现有容器(如果有的话),然后重新构建项目。

这解决了我的问题,希望对其他人有所帮助!

【讨论】:

  • 对于未来的读者 - 有更详细的试用版和error walk through here
  • 不过,“更详细的试验和错误”不会解决任何未来读者的问题。相反,它描述了很久以前就发布的 GetVsDbg.ps1 的代理修复..
【解决方案2】:

3 年多后,如果您的安全软件在 orchestrationVS 2019 准备时阻止执行上述 Power Shell 脚本 (GetVsDbg.ps1),则该问题仍然有效。

不过,有一个更简单的解决方法来实现理想的解决方案,而不是非常好的和可接受的答案,即欺骗VS 2019 认为remote debugger 的最新和准确版本已经放在下面下面这个目录,后面叫target directory

%userprofile%\vsdbg\vs2017u5

警告:此解决方法假定所有调试会话都将使用相同的操作系统执行。

食谱:

  1. 收集所需信息 - 工具的Version 和目标Runtime ID,在orchestration 期间从Containers Tools 输出溢出,即。

信息:使用 vsdbg 版本“16.9.20111.1”
信息:使用运行时 ID 'linux-x64'

  1. 在 Visual Studio 中关闭解决方案。

  2. 从上述 url 模板下载你需要的调试器

    https://vsdebugger.azureedge.net/vsdbg-(版本)/vsdbg-(运行时ID).zip

    . 更改为- 作为版本。

  3. 解压并复制到target directory(上面提到的)

  4. target directory 中创建一个名为success_rid.txt 的文件,其内容为(Runtime ID)

  5. target directory 中创建一个名为success_version.txt 的文件,其内容为(Version)

完成。现在可以重新打开解决方案,下一个orchestration 应该会产生这样的东西:

信息:存在最新版本的 VsDbg。跳过下载

这意味着GetVsDbg.ps1 假设它现在具有调试所需的内容。鉴于 'docker-compose' 是正确的,所有容器都应按预期准备。

【讨论】:

  • 感谢您让这一切重见天日!我仍然以这种方式挣扎。不过,我会继续偶尔搜索如何减少每个新版本的流程手动操作(基本上,每次我再次对它感到沮丧时)
猜你喜欢
  • 2021-04-25
  • 2020-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多