如何在 Docker 中调试已设置为无需 Dockerfile 构建的 .net 项目

问题描述 投票:0回答:1

我有一个简单的 .net 8 控制台应用程序,我可以使用以下命令构建和创建容器。

dotnet 发布 /t:PublishContainer

我将其配置为不需要 Dockerfile 即可使用 csproj 文件中的所有所需信息进行构建。 但是我无法在 Docker 中从 Visual Studio 调试该项目。

下面是 .csproj 文件中的所有内容,使我能够构建并发布到本地 docker。

  <Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <IsPublishable>true</IsPublishable>
    <EnableSdkContainerSupport>true</EnableSdkContainerSupport>
    <TargetFramework>net8.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <ContainerRepository>whack-a-mole</ContainerRepository>
    <ContainerBaseImage>my.com/custom/image:basedon-jammy</ContainerBaseImage>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    <EnableSdkContainerDebugging>True</EnableSdkContainerDebugging>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.19.6" />
  </ItemGroup>
</Project>

我还在项目文件夹中添加了一个 launchSettings.json 文件,其中包含以下内容,但仍然缺少一些内容

{
  "profiles": {
    "WhackAMole": {
      "commandName": "Project"
    },
    "WSL": {
      "commandName": "WSL2",
      "distributionName": ""
    },
    "Run in Docker": {
      "commandName": "Docker"
    }
  }
}
.net docker .net-core csproj
1个回答
0
投票

在 VS 17.10 中,您可以通过添加->“Docker 支持”启用此功能:
Add->“Docker 支持””/></a></p>
<p>然后选择容器构建类型:“.NET SDK”:<br/>
<a href=Target OS: Linux
Container Build Type: .NET SDK

也就是说,看看您的项目,您已经完成了 90% 的工作,唯一明显的问题是启动配置文件应该是:

"Container (.NET SDK)": {
  "commandName": "SdkContainer"
}
© www.soinside.com 2019 - 2024. All rights reserved.