如何通过 dotnet sdk 将 .dcproj 添加到解决方案中

Jen*_*nan 7 docker .net-core docker-compose asp.net-core-cli

我有一个名为: 的解决方案MyProject.sln和名为 - 的与 docker 相关的项目docker-compose.dcproj

我想创建 dotnet 新模板,其中将包含通过项目对 docker-compose 的支持docker-compose.dcproj

我尝试了这个命令:

dotnet sln MyProject.sln add docker-compose.dcproj

我收到此错误消息:

项目“C:\MyProject\docker-compose.dcproj”的项目类型未知,无法添加到解决方案文件中。请联系您的 SDK 提供商以获取支持。

我正在使用.net core sdk版本3.1.100.

如何docker-compose.dcproj通过上面的命令添加到解决方案中?

yal*_*cat 10

您可以使用 VS 解决这个问题,请参阅下图。这将在解决方案的根目录中生成 docker-compose.yml 文件。

在此输入图像描述


Zia*_*han 9

我至少可以通过两种方式让它发挥作用。

1. 视觉工作室

我创建了一个.net框架项目。右键单击项目。添加 > Docker 支持。我搬家了

  1. docker-compose.dcproj
  2. docker-compose.override.yml
  3. docker-compose.yml

到 .NET Core 项目文件夹。

选择“添加新项目”并选择此 dcproj 文件。对撰写文件进行一些编辑。我能够让它工作。

2.当你没有视觉工作室时。

我也看到了提到的错误。无法通过cli添加项目

$ dotnet sln ConsoleApp2.sln add "docker-compose.dcproj"
Project 'C:\Code\ConsoleApp2\docker-compose.dcproj' has an unknown project type and cannot be added to the solution file. Contact your SDK provider for support.
Run Code Online (Sandbox Code Playgroud)

我修改了 sln 文件文本如下。

$ 输入 docker-compose.dcproj

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk">
  <PropertyGroup Label="Globals">
    <ProjectVersion>2.1</ProjectVersion>
    <DockerTargetOS>Windows</DockerTargetOS>
    <ProjectGuid>9c31f76d-0249-4004-9b65-d5fa07cf95f8</ProjectGuid>
  </PropertyGroup>
  <ItemGroup>
    <None Include="docker-compose.override.yml">
      <DependentUpon>docker-compose.yml</DependentUpon>
    </None>
    <None Include="docker-compose.yml" />
  </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

Global在解决方案文件中添加以下两行。

Project("{Any GUID}") = "docker-compose", "docker-compose.dcproj", "{<ProjectGuid> from above output}"
EndProject
Run Code Online (Sandbox Code Playgroud)

请不要弄乱文件格式。要特别小心。在尝试执行任何操作之前,请保存解决方案文件的副本。祝你好运。