다음을 통해 공유


진단 코드 MSB3577

이 문서에서는 MSB3577 오류 코드에 대해 설명합니다.

메시지 내용

MSB3577: Two output file names resolved to the same output path: 'value'

설명

이 오류는 빌드 출력에 중복 파일 이름이 있음을 나타냅니다.

해결 방법

오류를 진단하는 데 추가 정보가 필요한 경우 명령줄 스위치를 사용하여 진단 로깅을 -verbosity:diag 사용하도록 설정한 다음 전체 진단 출력으로 MSBuild 로그 파일을 확인합니다. 대규모 프로젝트에서 더 긴 출력 로그의 경우 -bl와 함께 이진 로그 명령줄 스위치를 사용하여 출력을 보다 쉽게 보는 것이 좋습니다.

파일을 확인하고 빌드에서 파일을 여러 번 생성하는 이유를 확인합니다. 조사해야 할 몇 가지 사항은 다음과 같습니다.

  • 파일을 생성하는 특정 빌드 프로세스 찾기
  • 파일이 다시 생성되도록 하는 빌드 프로세스의 중복 단계 식별
  • 충돌을 방지하기 위해 빌드 프로세스에서 파일 인스턴스의 이름을 바꿀 수 있는지 확인

고유한 파일 이름 만들기

MSB3577 오류는 특히 Visual Basic Windows Forms 프로젝트에서 리소스 파일에서 발생합니다. 프로젝트 파일을 편집하여 메타데이터를 지정할 ManifestResourceName 수 있습니다. 그러면 태스크가 GenerateResource 각 리소스 파일에 대한 고유한 파일 이름을 만드는 데 도움이 될 수 있습니다. 간단한 예제는 다음 코드에 나와 있습니다.

<EmbeddedResource Include="MyResources.resx">
  <ManifestResourceName>CustomName</ManifestResourceName>
</EmbeddedResource>

지정된 CustomName 값이 생성된 각 리소스 파일에 대해 다른지 확인해야 합니다.

MSBuild 16.10 이상에서는 메타데이터를 사용하여 TargetPath 중복된 경로 이름을 구분할 수 있습니다.

<Content Include="Files\**">
  <Link>Files\%(Filename)%(Extension)</Link>
  <TargetPath>%(Filename)%(Extension)</TargetPath>
  <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

이 작업을 수행하기 위해 Visual Studio에서 확장을 추가할 필요가 없습니다. 확장 .resources 이 자동으로 적용됩니다.

적용 대상

MSBuild의 모든 버전