防止将引用的程序集PDB和XML文件复制到输出

我有一个Visual Studio 2008 C#/ .net 3.5项目与后构build任务ZIP内容。 不过,我发现我也得到了我的输出目录(和ZIP)中的引用程序集的.pdb(debugging)和.xml(文档)文件。

例如,如果MyProject.csproj引用了YourAssembly.dll,并且在与DLL相同的目录中有YourAssembly.xml和YourAssembly.pdb文件,它们将显示在我的输出目录(和ZIP)中。

我可以排除* .pdb压缩时,但我不能blanket排除* .xml文件,因为我有部署文件具有相同的扩展名。

有没有办法阻止项目复制引用程序集的PDB和XML文件?

我希望能够在主应用程序中添加和删除引用的程序集,同时避免需要维护哪些文件需要删除或排除。

我挖通过Microsoft.Common.targets寻找的东西,将工作,并findAllowedReferenceRelatedFileExtensions属性。 它默认为.pdb; .xml .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> 

您也可以通过命令行指定:

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

您可以添加类似于del "$(TargetDir)YourAssembly*.xml", "$(TargetDir)YourAssembly*.pdb"的Post Build事件命令del "$(TargetDir)YourAssembly*.xml", "$(TargetDir)YourAssembly*.pdb"

这是一个相当古老的问题,但由于没有关于如何通过UIclosures生成PDB和XML文件的答案,我认为它应该在这里是完整的。

在Visual Studio 2013中:在项目属性中,在编译选项卡下,取消选中“生成XML文档文件”,然后点击下面的“高级编译选项”,将“生成debugging信息”更改为“无”,这将做到这一点。

如果你只想排除XML文件(比如说一个debugging版本),你可以这样做:

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

基本上,每个扩展(由分号分隔)列出将被排除在外。