127

コンテンツをZI​​Pするためのビルド後のタスクを含むVisualStudio2008 C#/。NET3.5プロジェクトがあります。ただし、出力ディレクトリ(およびZIP)で参照されているアセンブリの.pdb(デバッグ)ファイルと.xml(ドキュメント)ファイルも取得していることがわかりました。

たとえば、MyProject.csprojがYourAssembly.dllを参照し、DLLと同じディレクトリにYourAssembly.xmlファイルとYourAssembly.pdbファイルがある場合、それらは出力ディレクトリ(およびZIP)に表示されます。

ZIPで*.pdbを除外することはできますが、同じ拡張子のデプロイメントファイルがあるため、*。xmlファイルを包括的に除外することはできません。

プロジェクトが参照されるアセンブリPDBおよびXMLファイルをコピーしないようにする方法はありますか?

4

8 に答える 8

167

削除または除外する必要のあるファイルを維持する必要をなくしながら、プライマリアプリケーションで参照されるアセンブリを追加および削除できるようにしたかったのです。

Microsoft.Common.targets私はうまくいく何かを探して掘り下げて、AllowedReferenceRelatedFileExtensionsプロパティを見つけました。デフォルトはに設定されて.pdb; .xmlいるため、プロジェクトファイルで明示的に定義しました。問題は、何かが必要なことです(空白では不十分です)。そうでない場合でも、デフォルトが使用されます。

<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>
于 2010-02-19T22:24:01.827 に答える
70

コマンドラインからこれを指定することもできます。

MsBuild.exe build.file /p:AllowedReferenceRelatedFileExtensions=none
于 2012-01-06T12:42:18.927 に答える
20

次のようなビルド後のイベントコマンドを追加できますdel "$(TargetDir)YourAssembly*.xml", "$(TargetDir)YourAssembly*.pdb"

于 2010-01-06T11:22:20.643 に答える
5

これはかなり古い質問ですが、UIを介したPDBおよびXMLファイルの生成をオフにする方法についての答えがないため、完全を期すためにここにあるべきだと考えました。

Visual Studio 2013の場合:プロジェクトのプロパティの[コンパイル]タブで、[XMLドキュメントファイルの生成]のチェックを外し、その下の[高度なコンパイルオプション]をクリックして[デバッグ情報の生成]を[なし]に変更します。これでうまくいきます。

于 2015-04-13T20:49:50.267 に答える
4

トップ2の答えは私にはうまくいきませんでした。私はこのリンクで私のために働いた解決策を見つけました。http://kitsula.com/Article/How-to-exclude-xml-doc-files-from-msbuild

念のため、上記のリンクは機能していません。

  1. ソリューションエクスプローラーでプロジェクトをアンロードします

  2. プロジェクトを右クリックし、[編集*.csproj]をクリックします

  3. 各環境のPropertyGroupセクションに次の行を追加します。

  4. プロジェクトをリロードして再構築します。

     <AllowedReferenceRelatedFileExtensions>
              *.pdb;
              *.xml
     </AllowedReferenceRelatedFileExtensions>
    
于 2020-10-14T10:40:17.160 に答える
2

私は他の答えにあまり運がありませんでした、私は最終的に組み込みの「削除」コマンドを使用して私の実装でこれを行う方法を理解しました、明らかにワイルドカードを実装するために必要な特定の方法があります、それは 少し微妙です、ここにあります「Project」タグの下の「CSPROJ」( TargetDirは組み込みの変数であり、自動的に含まれます)に入れる必要があるすべてのもの:

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

また、さまざまな言語固有のフォルダーが生成されるのに問題がありました。その問題が発生した場合は、未使用の言語固有のフォルダーも削除できます。ビルドタイプ「リリース」でのみこれをトリガーすることを選択しました。

<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>
于 2019-03-11T20:01:40.270 に答える
0

私の答えは今では些細なことかもしれませんが、対応する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初心者に役立つことを願っています。

于 2019-01-30T20:41:00.913 に答える
-4

XMLファイル(たとえば、デバッグリリース)のみを除外する場合は、次のようにすることができます。

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

基本的に、リストされている各拡張子(セミコロンで区切られている)は除外されます。

于 2014-01-08T19:14:30.160 に答える