IT박스

참조 된 어셈블리 PDB 및 XML 파일이 출력으로 복사되지 않도록 방지

itboxs 2020. 7. 25. 10:44
반응형

참조 된 어셈블리 PDB 및 XML 파일이 출력으로 복사되지 않도록 방지


내용을 압축하는 빌드 후 작업이 포함 된 Visual Studio 2008 C # /. NET 3.5 프로젝트가 있습니다. 그러나 출력 디렉토리 (및 ZIP)에 참조 된 어셈블리의 .pdb (디버그) 및 .xml (문서) 파일도 얻습니다.

예를 들어 MyProject.csproj가 YourAssembly.dll을 참조하고 YourAssembly.xml 및 YourAssembly.pdb 파일이 DLL과 동일한 디렉토리에 있으면 출력 디렉토리 (및 ZIP)에 표시됩니다.

ZIP 파일을 만들 때 * .pdb를 제외 할 수 있지만 동일한 확장명을 가진 배포 파일이 있으므로 * .xml 파일을 담요 제외 할 수는 없습니다.

프로젝트가 참조 된 어셈블리 PDB 및 XML 파일을 복사하지 못하게하는 방법이 있습니까?


명령 행을 통해이를 지정할 수도 있습니다.

MsBuild.exe build.file /p:AllowedReferenceRelatedFileExtensions=none

삭제하거나 제외해야하는 파일을 유지 관리 할 필요없이 기본 응용 프로그램에서 참조 된 어셈블리를 추가하고 제거 할 수 있기를 원했습니다.

나는 Microsoft.Common.targets일을하고 AllowedReferenceRelatedFileExtensions재산을 찾은 것을 찾아 헤 through 다 . 기본적으로 .pdb; .xml프로젝트 파일에 명시 적으로 정의했습니다. catch는 무언가 가 필요하다는 것입니다 (공백이 충분하지 않습니다) 그렇지 않으면 여전히 기본값을 사용합니다.

<Project ...>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    ...
    <AllowedReferenceRelatedFileExtensions>
      <!-- Prevent default XML and PDB files copied to output in RELEASE. 
           Only *.allowedextension files will be included, which doesn't exist in my case.
       -->
      .allowedextension
    </AllowedReferenceRelatedFileExtensions> 
  </PropertyGroup>

다음과 유사한 빌드 후 이벤트 명령을 추가 할 수 있습니다 del "$(TargetDir)YourAssembly*.xml", "$(TargetDir)YourAssembly*.pdb"


이것은 다소 오래된 질문이지만 UI를 통해 PDB 및 XML 파일 생성을 해제하는 방법에 대한 답변이 없으므로 완성을 위해 여기에 있어야한다고 생각했습니다.

Visual Studio 2013의 경우 : 프로젝트 속성의 컴파일 탭에서 "XML 문서 파일 생성"을 선택 취소 한 다음 아래의 "고급 컴파일 옵션"을 클릭하고 "디버그 정보 생성"을 "없음"으로 변경하면 트릭이 수행됩니다.


내 대답은 지금 사소한 것일 수도 있지만 해당 dll이있는 경우 XML 파일을 삭제하는 데 사용하는 BAT 스크립트를 공유하고 싶습니다. 출력 폴더를 정리하고 제거하지 않으려는 다른 xml 파일이있는 경우 유용합니다.

SETLOCAL EnableDelayedExpansion

SET targetDir=%1

ECHO Deleting unnecessary XML files for dlls

FOR %%F IN (%targetDir%*.xml) DO (

  SET xmlPath=%%~fF
  SET dllPath=!xmlPath:.xml=.dll!

  IF EXIST "!dllPath!" (
    ECHO Deleting "!xmlPath!"
    DEL "!xmlPath!"
  )
)

용법:

Cleanup.bat c:\my-output-folder\

여기저기서 검색하는 모든 유형의 간단한 작업 ( "지연된 확장"덕분에)을 완료하는 데 1 시간이 걸렸습니다. 그것이 나와 같은 다른 BAT 초보자를 돕기를 바랍니다.


I didn't have much luck with the other answers, I finally figured out how to do this in my implementation by using the built in "Delete" command, apparently there is a specific way you need to implement wildcards, it's bit nuanced, here's everything you need to be put into your "CSPROJ" (TargetDir is a built in variable, included automatically) under the "Project" tag:

<Target Name="RemoveFilesAfterBuild">   
    <ItemGroup>
        <XMLFilesToDelete Include="$(TargetDir)\*.xml"/>
        <PDBFilesToDelete Include="$(TargetDir)\*.pdb"/>
    </ItemGroup>
    <Delete Files="@(XMLFilesToDelete)" />
    <Delete Files="@(PDBFilesToDelete)" />
</Target>

I've also had trouble with various language specific folders being generated, if you have that issue too, you can also remove unused language specific folders too. I've chosen to only trigger this under the build type "Release":

<ItemGroup>
    <FluentValidationExcludedCultures Include="be;cs;cs-CZ;da;de;es;fa;fi;fr;ja;it;ko;mk;nl;pl;pt;ru;sv;tr;uk;zh-CN;zh-CHS;zh-CHT">
        <InProject>false</InProject>
    </FluentValidationExcludedCultures> 
</ItemGroup>

<Target Name="RemoveTranslationsAfterBuild" AfterTargets="AfterBuild" Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <RemoveDir Directories="@(FluentValidationExcludedCultures->'$(OutputPath)%(Filename)')" />

    <ItemGroup>
        <XMLFilesToDelete Include="$(TargetDir)\*.xml"/>
        <PDBFilesToDelete Include="$(TargetDir)\*.pdb"/>
    </ItemGroup>
    <Delete Files="@(XMLFilesToDelete)" />
    <Delete Files="@(PDBFilesToDelete)" />
</Target>

If you only want to exclude the XML files (for say a debug release) you can do something like this:

<AllowedReferenceRelatedFileExtensions>
  <!-- Prevent default XML from debug release  -->
      *.xml
 </AllowedReferenceRelatedFileExtensions>

Basically, each extension (delimited by a semi-colon) listed will be excluded.

참고URL : https://stackoverflow.com/questions/2011434/preventing-referenced-assembly-pdb-and-xml-files-copied-to-output

반응형