前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Tip】如何让引用的dll随附的xml注释文档、pdb调试库等文件不出现在项目输出目录中

【Tip】如何让引用的dll随附的xml注释文档、pdb调试库等文件不出现在项目输出目录中

作者头像
AhDung
发布2018-09-13 11:21:20
1.6K0
发布2018-09-13 11:21:20
举报
文章被收录于专栏:AhDung

项目输出目录(bin/debug|release)中经常是这个样子:

代码语言:javascript
复制
main.exe
main.pdb 
a.dll
a.xml
b.dll
b.pdb
b.xml
...

其中xml是同名dll的注释文档,pdb是调试库。我们最终应该只想要exe和dll,除了手工删,我知道的有两招,可以让项目生成后,xml和pdb不会出现:

1、利用项目【生成事件】。在项目\属性中有个生成事件,分事前、事后两个事件,于是可以在事后事件中写上删除语句。这里支持的是cmd命令行语句,示例:

代码语言:javascript
复制
del /f /q /a $(TargetDir)a.xml
del /f /q /a $(TargetDir)b.pdb

rem 也可用通配符
del /f /q /a $(TargetDir)x?x*.xml

有个问题,对web项目没用,就是本地bin目录中是没了,但服务器上的bin目录会有。我猜测web项目的发布动作并不是先生成在本地bin,完了再拷过去,而是有可能先生成在一个临时目录,完了再从临时目录分别拷到bin和远端,所以只删bin中的无济于事,关键是删临时目录,我猜测是obj目录,改天实践,有清楚的朋友望能指教。我此前一直用的就是这招,直到今天学到了下面的新招。

2、在项目csproj文件加入元素节点AllowedReferenceRelatedFileExtensions。具体如下:

代码语言:javascript
复制
<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>
...

AllowedReferenceRelatedFileExtensions从名称上就能看出,它就是专门用来干这个的(相比,生成事件能做的事更多),父元素PropertyGroup通常分Debug和Release两个节点(上面举例的是Release节点),Allow...元素加在Debug里就在生成debug版本时起作用,release同理,可以debug/release都加,也可以有不同配置,比如debug时允许pdb,release时则阻止。.allowedextension就是允许包含的文件类型,比如.pdb就代表允许包含pdb文件,那么在bin中就可能会出现pdb。可以用分号分隔多个类型,比如.pdb;.xml,这样则是pdb和xml都允许包含,不支持通配符;留空则是任何文件都允许,所以如果要阻止pdb和xml,必须弄一个它俩以外的扩展名,比如上面的.allowedextension。BTW,这招是从stackoverflow学到到的,http://stackoverflow.com/questions/2011434/preventing-referenced-assembly-pdb-and-xml-files-copied-to-output

需要说明,项目自身的pdb和xml是否生成,正确是在【项目\属性\生成】中进行设置。生成事件法可以作用到项目自身的相关文件,但Allow...元素法不会,它只对所引用的程序集相关文件有效。

-文毕-

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-11-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档