如何让 docker 工具箱与 .net core 2.0 项目一起使用

2024-04-14

我尝试在 .NET core 2.0 项目中使用 Docker 功能时遇到错误。我收到一条错误消息:

Visual Studio 容器工具需要先运行 Docker 构建、调试或运行容器化项目。欲了解更多信息, 请参见:http://aka.ms/DockerTools故障排除 http://aka.ms/DockerToolsTroubleshooting

我点击了链接,意识到我有 Windows 10 Home x64,并且必须安装 Docker Toolbox,而不是 Docker For Windows。现在它安装了这个可执行文件

Docker 快速入门终端

这是启动 docker 服务的方式吗?我尝试运行这个可执行文件,它似乎有效。我的容器正在运行,但 Visual Studio 容器工具的错误仍然存​​在。

我缺少什么?为了在 Visual Studio 2017 中使用 Docker 容器支持,是否需要拥有高于 Home 的 Windows 版本?

UPDATE:

我尝试遵循 Quetzcoatl 的建议,但我仍然在 Visual Studio 中遇到关于这些工具的相同错误。这是我在 Docker 快速启动终端中运行的内容。我在 Visual Studio 成功打开项目后尝试构建项目,但仍然收到上述有关容器工具的错误。

我的 devenv.exe 文件位于

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\devenv.exe

我的解决方案文件位于

D:\开发\Visual Studio\Musify2\Musify2\Musify2.sln

更新2:

I ran some of the suggested commands to try in the docker quickstart terminal and here were the results of those commands quetzenter image description here


对于 Docker Toolbox,这有点棘手,但实际上 core-2.0 与这里无关。这都是关于 docker、docker-toolbox 和 VS 的。

首先:

这是启动 docker 服务的方式吗?我尝试运行这个可执行文件,它似乎有效。

是的。如果 docker 机器/服务正在运行 - 那很好!

现在,您必须意识到,在 docker 中,通常有关 docker 如何/在何处运行的信息保存在环境变量. The quickstart脚本不仅为您启动 docker-machine 并检查一些基本的事情,它还设置了一些环境变量,以便以后所有命令docker, docker-compose等知道在哪里寻找 docker 虚拟机。在您/我们的情况下,该信息主要由 VM 的 IP 和 Docker 侦听的端口号组成。

..并且您的 Visual Studio 对此一无所知,因为,我敢打赌,您已经从开始菜单或桌面图标或双击解决方案文件运行了 VisualStudio,因此它没有机会获取环境变量从quickstart安慰。

解决方案非常简单:确保 VS 获取该信息。也就是说,确保它获取环境变量,and确保它得到fresh它们的状态,因为 IP/端口有时可能会波动。因此,不要只是将它们复制到操作系统设置中,因为没有任何东西会自动刷新它们。

我发现最简单的方法是关闭 Visual Studio,运行 docker toolbox faststart console,然后从该控制台中运行 VisualStudio,以我的VS2017社区版为例:

Starting "default"...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
(.......snip..........)


                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/

docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com

Start interactive shell
quetzalcoatl@LAP049 MINGW32 ~
$ /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/Community/Common7/IDE/devenv.exe C:\\PATH\\TO\\MY\\SOLUTION.sln

即使使用 TAB 补全,路径也很长,所以通常会写一个很小的.sh为我运行它的脚本。

顺便提一句!请注意,DEVENV 的路径必须是类 UNIX 的(/c/Program\ Files...),因为 mingw shell 必须理解这一点,而 SOLUTION 的路径必须是普通的 Windows 路径(c:\projects\foo\bar\..)因为 VisualStudio 会在启动后尝试读取该内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 docker 工具箱与 .net core 2.0 项目一起使用 的相关文章

随机推荐

  • NSMutableArray 与 NSArray 哪个更好

    这是一个有点愚蠢的问题 但是如果我想将一个对象添加到数组中 我可以使用两者来完成NSMutableArray and NSArray 我应该使用哪个 NSMutableArray array1 array1 addObject obj NS
  • 当另一个应用程序开始/停止播放音频时,我的应用程序可以收到通知吗?

    我的 iOS 游戏有音乐和音效 我想让用户听自己的音乐来代替游戏的背景音乐 一个简单的解决方案是添加一个新的菜单项来禁用游戏的背景音乐 但是 我想避免创建新的菜单项 除非我确信这种方法对用户来说更糟糕 我目前的做法 将音频会话类别设置为AV
  • 为什么 RNN 需要两个偏置向量?

    In Pytorch RNN 实现 http pytorch org docs master nn html highlight rnn torch nn RNN 有两个偏差 b ih and b hh 为什么是这样 它与使用一种偏差有什么
  • 如何强制 PM2 使用我的应用程序的最新版本?

    我首先调用 PM2pm2 start index js watch ignore watch node modules 然而 尽管告诉它查看我的文件是否有更改然后重新加载 但当我从 git 拉取时 它并没有使用我的应用程序的最新版本 要测试
  • 尽管手机设置了静音模式,但在 Android 通知中播放声音

    我的应用程序正在显示通知 并且当显示通知时 会播放声音 但是当我的手机处于 静音模式 时 不会播放通知 我想 覆盖 音量设置 并在设置了静音模式的情况下播放声音 有办法做到吗 您好 您可以使用 MediaPlayer 作为通知声音 方法是启
  • 如何返回元素的个数?

    我必须编写一个函数 它接受一个整数列表作为参数并返回列表中小于 1 的整数的数量 到目前为止 我所拥有的是一个仅返回列表中的整数个数的函数 我不确定应该在哪里 是否放置 if 语句和计数器以仅返回有多少个整数小于 1 export num
  • HTML 复选框的选中属性的正确值是多少?

    我们都知道如何在 HTML 中形成复选框输入
  • Google Play,发布应用程序更新,“本机平台”问题

    我有一个混合应用程序 我过去曾发布过更新 在当前的更新中 我添加了原生 facebook 登录 这需要在 libs 文件夹下添加 facebook jar 包 现在 当我在 PlayStore 中添加我的 APK 时 一切都很好 除了本机平
  • Dart:在 Windows 上构建时出现“无效参数:路径中存在非法字符”

    我的 index html 文件中的违规行如下 错误报告是 Build error Transform polymer PolymerBootstrapTransformer on myproj frontend web index htm
  • Ping 到存储过程以了解 .net 中的执行是否已完成?

    我必须执行一个存储过程 当我执行该操作时 我必须继续检查 ping 该执行是否完成 我将更新标签 我们在 C 中有什么办法可以做到这一点吗 异步调用存储过程 并让回调更新您的标签 这是一篇关于它的文章 http www devx com d
  • 计算机编程艺术练习题:第 1 章,问题 8

    我正在做 TAOCP 第 1 卷第 3 版的练习 但无法理解以下练习的答案中使用的语法 第 1 章练习 8 Computing the greatest common divisor of positive integers m n by
  • 干预/图像需要文件信息

    我在干预 图像方面遇到问题 Laravel composer install intervention image 2 1 1 requires ext fileinfo gt the requested PHP extension fil
  • 如何改进构建器模式?

    动机 最近我寻找一种方法来初始化复杂的对象 而不需要向构造函数传递大量参数 我尝试使用构建器模式 但我不喜欢这样的事实 即我无法在编译时检查是否确实设置了所有需要的值 传统建造者模式 当我使用构建器模式来创建我的Complex对象 创建更加
  • 在 C 中无需 va_list 即可访问可变参数函数的参数

    是否可以使用指向最后一个命名参数的指针 void 指针 来迭代可变参数函数的参数 我知道这不是使用可变参数的正确方法 但我仍然感兴趣这是否可行 将指针设置到字符串的末尾不起作用 因为在我开始移动指针后 它指向程序中使用的其他字符串 incl
  • 根据之前从本地存储选择的过滤器推送历史记录

    由于我是 React 新手 我尝试根据本地存储中存储的先前选择的过滤器正确实现路由 然后在应用程序启动时将它们推送到历史记录 有超时 如果没有超时 应用程序会在获取用户上下文 令牌身份验证之间跳转 http localhost 3000 t
  • 链表数组 C++

    所以我以为我理解如何实现指针数组 但我的编译器说否则 任何帮助将不胜感激 我觉得我已经很接近了 但缺少一些关键的东西 1 我声明了一个名为 node 的结构 struct node int num node next 2 我已经声明了一个指
  • 如何以编程方式检测小米设备中的全屏手势模式

    我正在编写一个 Android 应用程序 需要计算屏幕的高度才能正确显示内容 但是当我切换到全屏手势模式时 我在小米设备 Mi 9 SE 中获得的高度不正确 如何获取小米设备屏幕的真实高度 或者检查用户是否开启了全屏手势模式 我已经尝试过这
  • 将 exe 和 msi 文件合并到一个安装程序中

    我有两个安装文件 间谍软件 后续 msi 我希望将这两个安装文件合并到一个安装文件中 以便可以在目标计算机上同时一一安装 我尝试了 NSIS 但它只是从安装文件中提取文件 但没有安装软件包 Inno Setup 也做了同样的事情 我的问题是
  • 安装ADT插件后,不出现欢迎使用Android开发

    使用 ADT 插件安装 Eclipse 后我陷入困境 完成所有步骤后 它应该显示 欢迎来到 android 开发 但我只看到 Java 开发 我的设置如下 Java JDK 6 日食朱诺 SR1 Android SDK 4 1 所有默认包和
  • 如何让 docker 工具箱与 .net core 2.0 项目一起使用

    我尝试在 NET core 2 0 项目中使用 Docker 功能时遇到错误 我收到一条错误消息 Visual Studio 容器工具需要先运行 Docker 构建 调试或运行容器化项目 欲了解更多信息 请参见 http aka ms Do