일부 타사 구성 요소를 참조하는 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>
입니다.