在涉及目标“DockerBuildServiceReferences”的目标依赖关系图中存在循环依赖关系

我正在尝试将docker支持添加到现有的ASP.Net(Core)Web应用程序。

到目前为止,我所做的只是右键单击我的解决scheme,然后单击Add > Docker Support 。 当我然后尝试使用docker开始debugging时,我得到以下错误:

 C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\Microsoft\VisualStudio\v15.0\Docker\Microsoft.VisualStudio.Docker.Compose.targets(170,5): error MSB4006: There is a circular dependency in the target dependency graph involving target "DockerBuildServiceReferences". 

我已经检查了Microsoft.VisualStudio.Docker.Compose.targets文件,我看不到涉及DockerBuildServiceReferences任何循环依赖,实际上只search整个文件,只是在两个地方提到:

  <!-- *********************************************************************************************** Docker Compose Project Targets *********************************************************************************************** --> <UsingTask TaskName="CleanWorkspace" AssemblyFile="$(DockerBuildTasksAssembly)" /> <UsingTask TaskName="EnsureMsVsMonExists" AssemblyFile="$(DockerBuildTasksAssembly)" /> <UsingTask TaskName="EnsureVsDbgExists" AssemblyFile="$(DockerBuildTasksAssembly)" /> <UsingTask TaskName="GetServiceReferences" AssemblyFile="$(DockerBuildTasksAssembly)" /> <UsingTask TaskName="PrepareForBuild" AssemblyFile="$(DockerBuildTasksAssembly)" /> <UsingTask TaskName="PrepareForLaunch" AssemblyFile="$(DockerBuildTasksAssembly)" /> <PropertyGroup> <BuildDependsOn> DockerSetDevelopmentMode; DockerPrepareForBuild; DockerGetServiceReferences; DockerBuildServiceReferences; $(BuildDependsOn); DockerComposeBuild; DockerPrepareForLaunch; </BuildDependsOn> <CleanDependsOn> DockerSetDevelopmentMode; DockerCleanWorkspace; $(CleanDependsOn); DockerGetServiceReferences; DockerCleanServiceReferences; </CleanDependsOn> </PropertyGroup> <PropertyGroup> <DockerComposeProjectPath>$(MSBuildProjectFullPath)</DockerComposeProjectPath> </PropertyGroup> 

和:

  <!-- *********************************************************************************************** TARGET : DockerBuildServiceReferences *********************************************************************************************** --> <Target Name="DockerBuildServiceReferences"> <PropertyGroup> <DockerServiceReferenceTarget Condition=" '$(DockerDevelopmentMode)' == 'Regular' ">DockerPackageService</DockerServiceReferenceTarget> <DockerServiceReferenceTarget Condition=" '$(DockerServiceReferenceTarget)' == '' ">Build</DockerServiceReferenceTarget> </PropertyGroup> <MSBuild Projects="@(DockerServiceReference)" Targets="$(DockerServiceReferenceTarget)" Properties="Configuration=$(Configuration);Platform=$(Platform);BuildingInsideVisualStudio=false" Condition=" '@(DockerServiceReference)' != '' " /> </Target> 

我也尝试从头创build一个新的ASP.NET Core应用程序,并添加了docker支持,它完美的工作。 这导致我相信这个错误覆盖了别的东西。

我正在使用Visual Studio 2017和docker version的输出如下(如果有帮助的话):

 Client: Version: 17.05.0-ce-rc1 API version: 1.27 (downgraded from 1.29) Go version: go1.7.5 Git commit: 2878a85 Built: Wed Apr 12 19:43:25 2017 OS/Arch: windows/amd64 Server: Version: 17.03.1-ce API version: 1.27 (minimum version 1.12) Go version: go1.7.5 Git commit: c6d412e Built: Fri Mar 24 00:00:50 2017 OS/Arch: linux/amd64 Experimental: true 

任何想法将不胜感激!

根据此线程和此答案 ,如果您有Dockerfile和项目文件( .csproj )不在同一个文件夹中,或者您有一个解决scheme文件( .sln项目文件( .csproj )在同一文件夹。

您可能已经在同一个目录中为它创build了一个解决scheme和启动项目,这将导致docker循环引用。 尝试使用单独的文件夹重新创build项目,然后重做所有步骤。