이 문서에서는 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의 모든 버전