1

我使用 Visual Studio 2017 制作了一个支持 docker-compose 的解决方案。当我尝试使用(在 CI 过程中)打包 nuget 包时,dotnet pack MySolution.sln我收到错误 MSB4057 说它无法打包 docker-compose.dcproj 项目。所以我尝试<IsPackable>false</IsPackable>在我的 docker-compose.dcproj 中使用,但没有成功。所以我必须一个一个地打包我的项目,或者为 CI 和调试过程使用不同的解决方案——这两种解决方案对我来说都很难看。

有谁知道如何排除 .dcproj 文件试图被打包dotnet pack

4

2 回答 2

1

我遇到了同样的问题,我通过向 docker-compose.dcproj 添加一个虚拟的“Pack”目标来解决它,所以我的项目如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" Sdk="Microsoft.Docker.Sdk">
  <PropertyGroup Label="Globals">
    <ImportDirectoryBuildProps>false</ImportDirectoryBuildProps>
    <ImportDirectoryBuildTargets>false</ImportDirectoryBuildTargets>
    <ProjectVersion>2.1</ProjectVersion>
    <DockerTargetOS>Windows</DockerTargetOS>
    <ProjectGuid>0a1c7d45-3174-4d07-a025-4d5fd55042c0</ProjectGuid>
    <IsPackable>false</IsPackable>
    <IsTestProject>false</IsTestProject>
  </PropertyGroup>
  <PropertyGroup>
    <DockerServiceName>app-name</DockerServiceName>
  </PropertyGroup>
  <ItemGroup>
    <None Include="docker-compose.override.yml">
      <DependentUpon>docker-compose.yml</DependentUpon>
    </None>
    <None Include="docker-compose.yml" />
  </ItemGroup>

  <Target Name="Pack">
  </Target>

</Project>
于 2019-11-05T07:59:02.663 回答
0

在 CI 脚本中,在 pack 命令之前从解决方案中删除 docker-compose 项目

dotnet sln MySol.sln remove docker-compose.dcproj

于 2019-08-20T10:39:34.847 回答