Pergunta

Eu tenho um Visual Studio 2008 C # /. NET projeto de 3,5 com uma tarefa de pós compilação para ZIP o conteúdo. No entanto eu estou achando que eu também estou ficando ficheiros.PDB dos assemblies referenciados (debug) e .xml (documentação) no meu diretório de saída (e ZIP).

Por exemplo, se as referências MyProject.csproj YourAssembly.dll e existem arquivos YourAssembly.xml e YourAssembly.pdb no mesmo diretório que a DLL que vai aparecer no meu diretório de saída (e CEP).

posso excluir PDB * quando ZIP'ing mas não posso cobertor excluir os arquivos .xml * como eu tenho arquivos de implantação com a mesma extensão.

Existe uma maneira de impedir que o projeto de copiar referenciado assembly arquivos PDB e XML?

Foi útil?

Solução

Você também pode especificar essa via linha de comando:

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

Outras dicas

Eu queria ser capaz de adicionar e remover assemblies referenciados no meu aplicativo principal, evitando a necessidade de manter os arquivos que eu precisava para eliminar ou excluir.

Eu cavei através Microsoft.Common.targets procurando por algo que iria trabalhar e encontrou a propriedade AllowedReferenceRelatedFileExtensions. O padrão é .pdb; .xml então eu definida explicitamente no meu arquivo de projeto. O problema é que você precisa algo (espaço em branco não é suficiente), caso contrário ele ainda vai usar o padrão.

<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>

Você pode adicionar um comando Publicar Construir evento semelhante ao del "$(TargetDir)YourAssembly*.xml", "$(TargetDir)YourAssembly*.pdb"

Esta é uma questão bastante antiga, mas já que não há resposta sobre como desativar a geração de PDB e arquivos XML via UI, eu percebi que ele deveria estar aqui para ser completo.

No Visual Studio 2013: nas propriedades do projeto, sob a guia de compilação, desmarque a opção "Gerar arquivo de documentação XML", depois clique em "Opções de Compilação avançadas" abaixo desse e mudança "Gerar informações de depuração" para "None", e que vai fazer o truque.

A minha resposta poderia ser trivial agora, mas eu gostaria de compartilhar o script BAT eu uso para excluir os arquivos XML se há uma dll correspondente para ele. É útil se você quiser apenas para a limpeza da pasta de saída e tem outros arquivos xml que não deseja remover.

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!"
  )
)

Uso:

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

Levei uma hora para terminar este trabalho simples (graças ao material "expansão atrasada") com todo o tipo de procurar aqui e ali. Espero que ajude outros novatos MTD como eu.

Eu não tive muita sorte com as outras respostas, eu finalmente descobri como fazer isso na minha aplicação, utilizando o construído em "Excluir" comando , parece que há uma maneira específica você precisa implementar wildcards , é mordeu diferenciada, está aqui tudo o que precisa para ser colocado em seu "csproj"( TargetDir é construído em uma variável, incluída automaticamente) sob a tag "Projeto":

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

Eu também tive problemas com várias pastas de idioma específicos que está sendo gerado, se você tem esse problema também, você também pode remover pastas de idioma específicos não utilizados também. Eu escolhi apenas desencadear esta sob o tipo de compilação "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>

Se você só quer excluir os arquivos XML (para dizer uma versão de depuração) você pode fazer algo como isto:

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

Basicamente, irá ser excluída cada extensão (delimitado por um ponto e vírgula) listados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top