none
源码编译后包含注释内容? RRS feed

  • 问题

  • C#项目里面的代码包含注释内容,但是编译后发现里面还包含注释内容,导致 dll 文件体积巨大.

    请问要怎样在不修改源码文件的情况下;编译后可以不包含注释内容呢?

    2012年6月13日 4:09

答案

  •  不包含注释内容,如果包含的话,项目文件属性何必还要输出XML文档文件一项呢。

    C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0

    这个目录下何须每一个DLL都配有一个同名xml呢。


    快乐在于能够长时间的为自己认为值得的事情努力工作,不管它是什么。

    • 已标记为答案 钱仔 2012年6月15日 2:12
    2012年6月14日 0:39
  • dear

    注释并不会被编译成组件(DLL),若不相信可通过MSIL观察,DLL會太大可能是内含大挡案,例如图挡、文件


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    • 已标记为答案 钱仔 2012年6月15日 2:12
    2012年6月14日 6:54
  • C#项目里面的代码包含注释内容,但是编译后发现里面还包含注释内容,导致 dll 文件体积巨大.

    注释照例而言不会被编译进入dll或者exe里边的……,像你用Reflector反射去看微软源码,根本没有任何注释存在……

    另外,如果你要单独做类似微软MSDN一样的帮助文档,必须使用xml格式化的注释(C#///,VB.NET中三个连续英文逗号)。然后使用此工具即可:

     1、下载Sandcastle Help File Builder:

    http://www.codeplex.com/SHFB

    2、下载sandcastle:

    http://www.microsoft.com/downloads/details.aspx?FamilyID=e82ea71d-da89-42ee-a715-696e3a4873b2&DisplayLang=en

    1、先安装sandcastle,然后安装sandcastle Help File Builder。接着在使用sandcastle Help File Builder时配置好sandcastle安装路径(选项卡中的Path里的sandcastle Path)。

    2、在VS2005/2008环境中选择项目,右击鼠标选属性,切换到Build选项卡,然后把XML File Documentation打钩即可,生成项目。

    3、最后在sandcastle Help File Builder菜单:Project-->New Project from Visual Studio..即可导入工程。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 钱仔 2012年6月16日 21:53
    2012年6月14日 9:16
    版主
  • 你怎么确定生成的DLL包含注释呢?你的反编译工具,它们会自动找到你输出的xml文档文件,然后附加在反编译出来的源代码上,并不是DLL中包含的。不信你可以删掉文档文件,再打开,就没有注释了。

    快乐在于能够长时间的为自己认为值得的事情努力工作,不管它是什么。

    • 已标记为答案 钱仔 2012年6月15日 2:10
    2012年6月14日 23:37

全部回复

  • 貌似VS现在还没有这样的功能,在编译的时候自动删除注释代码。

    可以采用如下措施

    1.在发布前,借助第三方工具,清楚代码中的注释。CSDN上有这样的工具可以下载使用

    2.你可以自己写一个工具代码,删除文件里面的注释,仅供参考

    static string RemoveComment(string s)
      {
        return Regex.Replace
        (
          s,
          @"(?ms)""[^""]*""|//.*?$|/\*.*?\*/",
          delegate(Match m)
          {
            switch (m.Value.Substring(0, 2))
            {
              case "//": return "";
              case "/*": return " ";
              default  : return m.Value;
            }
          }
        );
      }


    http://blog.csdn.net/zx13525079024

    2012年6月13日 8:43
  • 好像注释不会被编译进去吧
    2012年6月13日 13:58
  •  不包含注释内容,如果包含的话,项目文件属性何必还要输出XML文档文件一项呢。

    C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0

    这个目录下何须每一个DLL都配有一个同名xml呢。


    快乐在于能够长时间的为自己认为值得的事情努力工作,不管它是什么。

    • 已标记为答案 钱仔 2012年6月15日 2:12
    2012年6月14日 0:39
  • 编译器在编译时会忽略注释的。DLL文件体积大应该是别的原因造成的,比如嵌入的资源文件

    共同努力,共同提高
    kaedei#live.cn My BLOG

    2012年6月14日 1:33
  • dear

    注释并不会被编译成组件(DLL),若不相信可通过MSIL观察,DLL會太大可能是内含大挡案,例如图挡、文件


    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/

    • 已标记为答案 钱仔 2012年6月15日 2:12
    2012年6月14日 6:54
  • C#项目里面的代码包含注释内容,但是编译后发现里面还包含注释内容,导致 dll 文件体积巨大.

    注释照例而言不会被编译进入dll或者exe里边的……,像你用Reflector反射去看微软源码,根本没有任何注释存在……

    另外,如果你要单独做类似微软MSDN一样的帮助文档,必须使用xml格式化的注释(C#///,VB.NET中三个连续英文逗号)。然后使用此工具即可:

     1、下载Sandcastle Help File Builder:

    http://www.codeplex.com/SHFB

    2、下载sandcastle:

    http://www.microsoft.com/downloads/details.aspx?FamilyID=e82ea71d-da89-42ee-a715-696e3a4873b2&DisplayLang=en

    1、先安装sandcastle,然后安装sandcastle Help File Builder。接着在使用sandcastle Help File Builder时配置好sandcastle安装路径(选项卡中的Path里的sandcastle Path)。

    2、在VS2005/2008环境中选择项目,右击鼠标选属性,切换到Build选项卡,然后把XML File Documentation打钩即可,生成项目。

    3、最后在sandcastle Help File Builder菜单:Project-->New Project from Visual Studio..即可导入工程。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    • 已标记为答案 钱仔 2012年6月16日 21:53
    2012年6月14日 9:16
    版主
  • 生成的dll文件里面是不包含注释的, 可以使用Reflector查看反编译后的C#代码, 也可以查看dll文件的结构, 看看是否是资源文件造成体积增大.
    2012年6月14日 14:35
  • 可能有的人没有遇到这问题.

    Vs2010 C#项目如果你的源码包含注释内容,在你选择输出Xml文档("项目(属性)" -> 输出),生成的Dll文件会包含注释.如果不选择输出XMl文档.则生成的Dll文件不会包含Xml注释.

    我在对比两者生成后的Dll大小是一样的.看来导致Dll文件大小并不是这个原因.

    但是我还是很想去掉Dll文件中的注释内容.可否有人提供在生成事件("项目(属性)" -> 生成事件)中后期生成事件的实现吗?或者帮我实现下:

    生成事件 -> 预先生成事件命令行设置

    • 设置项目属性 : 生成 -> 输出XMl文档.

    生成事件 -> 后期生成事件命令行设置

    • 设置项目属性 : 生成 -> 取消输出XMl文档.
    • 重新生成.

    我想这应该会是一个很好的方法.但是我不会写Bat文件........

    lol......

    • 已编辑 钱仔 2012年6月14日 16:51
    2012年6月14日 16:31
  • 你怎么确定生成的DLL包含注释呢?你的反编译工具,它们会自动找到你输出的xml文档文件,然后附加在反编译出来的源代码上,并不是DLL中包含的。不信你可以删掉文档文件,再打开,就没有注释了。

    快乐在于能够长时间的为自己认为值得的事情努力工作,不管它是什么。

    • 已标记为答案 钱仔 2012年6月15日 2:10
    2012年6月14日 23:37
  • 楼主:)

    注释是提供读者看的,解释代码用的。因此不会编译进入代码。

    所以建议您可以参照我的方法,输出xml文档专门用于制作类似MSDN的帮助文档之用,和代码分离。谢谢!

    >>生成 -> 输出XMl文档

    这不是混合进入exe或者dll,而是自动在exe文件夹下生成同名的xml解释性文档,用于制作MSDN帮助文档之用。http://www.cnblogs.com/netatomy/archive/2008/01/23/1050678.html


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年6月15日 1:13
    版主
  • 原先我一直以来是用 ILSpy 查看编译后的 Dll.后来我用你说的方法以及换了 Reflector 查看发现果然没有包含注释代码.

    Thanks All



    • 已编辑 钱仔 2012年6月15日 2:13
    2012年6月15日 2:12
  • 原先我一直以来是用 ILSpy 查看编译后的 Dll.后来我用你说的方法以及换了 Reflector 查看发现果然没有包含注释代码.

    Thanks All


    麻烦把我标记成答案吧:D,我的第一个回答,建议Reflector的。

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年6月15日 2:27
    版主
  • dear

    补充可以看MSIL的软件,若没有预算买Reflector,可以参考以下

    ildasm .net自带的

    http://www.myfirm.cn/20096/20090616081811641.html

    免费的反编译

    http://www.jetbrains.com/decompiler/?utm_source=dotpeek10-release&utm_medium=newsletter&utm_campaign=dotpeek

    另外,我使用ILSpy也没见到我自己定义的注释,我想你见到的注释应该是ISpy所建立的说明,或是它自动载入GAC 的XML说明挡,IL挡基本上不包含mark。

    根据网页上写,他的确会载入Xml说明,我个人认为ILSpy比Reflector好用

    http://wiki.sharpdevelop.net/ILSpy.ashx

    ILSpy Features

    • Assembly browsing
    • IL Disassembly
    • Support C# 5.0 "async"
    • Decompilation to C#
      • Supports lambdas and 'yield return'
      • Shows XML documentation



    秘訣無它,唯勤而已 http://www.dotblogs.com.tw/yc421206/




    2012年6月15日 3:24
  • 我一开始用的也是Reflector ,后来它收费以后我就改用ILSpy了。

    快乐在于能够长时间的为自己认为值得的事情努力工作,不管它是什么。

    2012年6月16日 1:09
  • 我一开始用的也是Reflector ,后来它收费以后我就改用ILSpy了。

    快乐在于能够长时间的为自己认为值得的事情努力工作,不管它是什么。

    其实还可以用Just-Decompiler,完全免费,Telerik公司出品,只要免费注册一下即可使用。

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年6月16日 1:10
    版主
  • 如你所愿.

    :)

    2012年6月16日 21:54
  •  

    ILSpy会自动加载同名dll的xml文档.

    我也认为ILSpy比Reflector好用.

    • 已编辑 钱仔 2012年6月16日 21:57
    2012年6月16日 21:54
  • 感谢你的资讯.
    2012年6月16日 21:56
  • 感谢你的资讯.
    不用谢,欢迎再来!:D

       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2012年6月17日 0:11
    版主