[visual-studio] 릴리스 모드 빌드에서 XML 문서 파일의 복사를 방지하는 방법은 무엇입니까?

일부 타사 구성 요소를 참조하는 Visual Studio 2010 프로젝트가 있습니다. 그들의 어셈블리는 우리 (그리고 우리 만) 개발자에게 유용한 XML 문서 파일과 함께 제공됩니다. 그리고 프로젝트가 빌드 될 때마다 (디버그 또는 릴리스 모드에서) 이러한 XML 파일이 빌드 디렉토리에 복사됩니다.

Visual Studio 내에서 또는 MSBuild를 통해 빌드 디렉터리에 대한 해당 XML 파일의 복사본을 비활성화하는 설정이나 스위치를 찾을 수없는 것 같습니다. 빌드 후 스크립트는 옵션 일 수 있지만 냄새 나는 스크립트입니다. 어떤 아이디어? 감사합니다.



답변

프로젝트를 빌드 할 때 .xml / .pdb 파일은 ResolveAssemblyReference 작업을 통해 수집됩니다. ResolveAssemblyReference가 호출되면 관련 파일의 파일 확장명 목록이 전달됩니다. 해당 파일 확장명 목록은 MSBuild 속성 AllowedReferenceRelatedFileExtensions 에서 캡처됩니다 . 기본적으로 해당 목록에는 “.pdb; .xml”이 포함됩니다.

모든 관련 참조 파일이 선택되지 않도록 제외하려면 속성 값을 관련 파일에 확장자가없는 것으로 재정의하면됩니다. 예를 들어 AllowedReferenceRelatedFileExtensions 를 “-“로 설정할 수 있습니다 .

반환되는 파일 목록을 사용자 지정할 수도 있습니다. .pdb 파일 만 찾으려면 .pdb 파일을 전달해야합니다 AllowedReferenceRelatedFileExtensions=".pdb". 이 경우 .dll / .exe 옆에 .pdb 파일이있는 모든 참조도 복사됩니다. 또한 .pdb / .xml로 끝나지 않을 수있는 다른 관련 파일을 복사하는 데 사용할 수도 있습니다. 예를 들어 MyAssembly.dll이라는 참조 어셈블리가 있고 동일한 폴더에 MyAssembly.pdb 및 MyAssembly.foo가있는 경우 설정 AllowedReferenceRelatedFileExtensions=".pdb;.foo"하면 .pdb 및 .foo 파일이 모두 출력 디렉터리로 복사됩니다.


답변

Visual Studio 프로젝트 파일은 msbuild 파일과 형식이 동일합니다. 따라서 구성 이름이 ‘Release’인 경우 xml 파일을 복사하지 않도록 해당 섹션에 수동으로 조건을 추가 할 수 있습니다.

변해야합니다

<ItemGroup>

…에

<ItemGroup Condition="'$(CONFIG)'=='RELEASE'">

또는 이와 비슷한 것.


답변

.xml / .pdb가 빌드 작업 “Content”(etc)로 표시되어 있으면 “None”으로 변경할 수 있습니다. 또한 copy-to-build-output이 false 인지 확인해야합니다 .

둘 다 설정 되었습니까?


답변

릴리스 빌드에서 XML 파일을 폴더에 복사하는 데 어떤 문제가 있습니까? 이것이 괜찮은 것 같고 실제 문제는 파일을 선택하여 설치 프로그램에 배치하는 코드에 있습니다. 자신의 bin \ release 폴더에서 타사 dll을 선택하는 것은 제 생각에는 좋은 습관이 아닙니다. 내 설치 프로그램이 내 소스 트리의 자체 폴더에서 타사 dll을 선택하도록했습니다.


답변

설정은 해당 프로젝트의 속성에있는 “빌드”탭에서 “XML 문서 파일”을 선택 취소합니다. 또한 . * proj 파일의 빌드 구성에 <DocumentationFile>적용 가능한 아래에서 호출되는 MSBuild 속성 <PropertyGroup>입니다.


답변