csproj 파일에 관한 질문드립니다.

오류메시지는 이런식으로 나옵니다.
C:\Program Files\dotnet\sdk\6.0.101\NuGet.targets(1056,5): error MSB4006: 대상 종속성 그래프에 “_GenerateRestoreProjectPathWalk” 대상과 관련된 순환 종속성이 있습니다. [C:\DSMV\TEMP\VS\TcpService\TcpService.csproj]

현재 아래처럼 인크루드를 한상태입니다. 저 상태에선 오류가 없습니다. dotnet run 시

그래서 C.csproj 파일에 B.csproj 를 인크루드 했습니다.

A.csproj include B.csproj, C.csproj
B.csproj include C.csproj
C.csproj 추가 include B.csproj

dotnet restore 해보면 이런 오류가 나옵니다.

:\Program Files\dotnet\sdk\6.0.101\NuGet.targets(1056,5): error MSB4006: 대상 종속성 그래프에 “_GenerateRestoreProjectPathWalk” 대상과 관련된 순환 종속성이 있습니다. [C:\DSMV\TEMP\VS\TcpService\TcpService.csproj]

이럴경우
dot restore

C:\Program Files\dotnet\sdk\6.0.101\NuGet.targets(1056,5): error MSB4006: 대상 종속성 그래프에 “_GenerateRestoreProjectPathWalk” 대상과 관련된 순환 종속성이 있습니다. [C:\DSMV\TEMP\VS\TcpService\TcpService.csproj]

빌드하지 못했습니다. 빌드 오류를 수정하고 다시 실행하세요.

서로간 인크루드가 안된다는 의미인거 같은데요
그렇다면 C.csproj 의 참조가 필요할 경우 어떻게 해야 합니다.

1 Like

B 프로젝트가 C 프로젝트를 참조하고, C 프로젝트가 B 프로젝트를 참조하고 있네요.
이로 인해 순환 참조 오류가 발생하여 빌드가 안되는 문제가 발생하신 걸로 파악됩니다.

이를 해결하려면 하나는 포기하셔야만 합니다.

  1. B 프로젝트가 C 프로젝트를 참조하지 않는다.
  2. C 프로젝트가 B 프로젝트를 참조하지 않는다.

그리고 나서 참조해야만 하는 코드를 다음과 같은 방법으로 해결하셔야 합니다.

  1. D 프로젝트를 새로 만들어서 필요한 코드를 옮긴다.
  2. B 또는 C 프로젝트에 코드를 옮긴다.
6 Likes