无法从dotnet包中排除* .dcproj

时间:2019-05-07 08:00:10

标签: docker-compose dotnet-core-pack

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

有人知道如何将.dcproj文件排除在dotnet pack的压缩范围之外吗?

2 个答案:

答案 0 :(得分:0)

在CI脚本中,使用

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

dotnet sln MySol.sln remove docker-compose.dcproj

答案 1 :(得分:0)

我遇到了同样的问题,并且通过在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>