【问题标题】:Use custom Visual Studio run configuration with Docker通过 Docker 使用自定义 Visual Studio 运行配置
【发布时间】:2018-03-07 23:17:35
【问题描述】:

我正在 Visual Studio 2017 中使用 Docker 设置 .NET Core 项目。我已经创建了项目并将 docker-compose 添加到解决方案中,一切正常。

但不知何故,VS 不会使用任何配置构建和运行 Docker,除了 DebugRelease

我创建了名为 Preproduction 的解决方案和项目配置并选择了它,并创建了一个 docker-compose.vs.preproduction.yml 文件。

但是当我运行预生产配置时,项目运行就像选择了 Release 一样。构建输出控制台还显示以下内容:

调试

*docker-compose -f "docker-compose.yml" -f "docker-compose.override.yml" -f "docker-compose.vs.debug.yml" -p dockercompose3979710767*

发布

*docker-compose -f "docker-compose.yml" -f "docker-compose.override.yml" -f "docker-compose.vs.release.yml" -p dockercompose3979710767*

预生产

*docker-compose -f "docker-compose.yml" -f "docker-compose.override.yml" -f "docker-compose.vs.release.yml" -p dockercompose3979710767*

注意第二个 yml 文件。 不知何故,它使用了发布文件,而不是我添加的自定义配置文件。

有人知道如何解决这个问题,所以 docker 会使用我的自定义配置吗?

【问题讨论】:

  • 经历相同:(

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


【解决方案1】:

很遗憾,这是不可能的。在花了很多时间弄清楚之后,事实证明这两个文件名被硬编码到了一个 DLL 中。不是“DEBUG”的所有内容都将使用“RELEASE”文件。

通过从不同文件夹引用它们来使用不同的 docker-compose.yml 文件可能是一种解决方案,但由于它不是标准项目而是 Docker 项目,因此您无权访问构建后事件来复制所需的那里的文件。此外,您不能拥有多个 Dockerfile,因为它也是基于名称约定的。

您可以使用一个版本进行开发和测试,在包含的文件中定义并创建一个脚本,该脚本根据您现有的撰写文件和您的额外文件手动构建所有内容。

【讨论】:

    【解决方案2】:

    我提供了一些非标准的解决方案来解决这个问题。开始了: 1) 获取dnSPY工具(https://github.com/0xd4d/dnSpy/releases)

    2) 安装它

    3) 查找文件 Microsoft.Docker.dll(对我来说它位于“C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Sdks\Microsoft.Docker.Sdk\tools ”的方式。)

    4) 获取此文件的副本(例如复制到某个目录中)。

    5) 在 dnSpy.exe 中打开这个 dll

    6)Go Microsoft.Docker(版本号) -> Microsoft.Docker.dll -> DockerComposeClient 类 -> MergedDockerComposeDocumentProvider 私有类 -> GetDocuments 私有方法

    7) 在这个方法中你可以看到所有用于构建的文件路径和文件

    8) 右键单击​​必要的字符串 -> 编辑 IL 指令

    9) 编辑您需要的内容(我可以将 docker-compose.override.yml 更改为 docker-compose.development.yml)

    10) 保存更改

    11) 文件 -> 保存模块并保存升级后的 DLL。

    哎呀!!!实际上 您必须重新启动 VS,也许还需要重新启动 docker。在此之后,您的更改将应用​​于管道构建。享受

    【讨论】:

      猜你喜欢
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-20
      • 2016-03-26
      • 1970-01-01
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多