在 ASP.net 的项目中生成 Sandcastle 用的 XML 文档
2008-07-03 15:34
295 查看
最近的项目准备结束了,代码里面一直是用 MS 推荐的注释格式。现在打算用 Sandcastle 来生成文档,但是 ASP.net 的项目和普通的项目不太同。一般项目都是可以在菜单“工程-属性”里面设置是否生成 XML 文档,但是 Web 项目没有这些选项。
在 MSDN 社区看到一个 MSFT 的版主 有个解决的办法。他的方法是在根目录下的 Web.config 中加入一个配置:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CSharp.CSharpCodeProvider, System,
Version=2.0.3600.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089"
compilerOptions="/doc:c:/app_code.xml" />
</compilers>
</system.codedom>
但是这样的话,因为所有的 .cs 文件都用这个配置,最终只会生成一个 app_code.xml 文件,里面的内容去不一定是 App_Code 里面的代码的内容而是要看最后编译的那个 cs 文件是哪个。他又提出为了防止这种问题,需要在每一个 aspx 文件里面加上,不同的文件的 outX 起来同的名字:
<%@ Page="" CompilerOptions="/doc:c:/outX.xml" %>
这样就可以给每一个文件都生成不同的 XML 文档。
但是这样也会产生其它的问题。本来我的项目中只生成一个 App_web_xxxx.dll 的(因为全部的 aspx 文件都在一个目录里面),但是这样单独配置后将会生成若干个 dll 文件。而且如果某个 aspx 文件忘记写了上面那句话,那么最终的 app_code.xml 文件的内容又会不对了。
经过我若干次尝试,发现还有更好的办法。在各个有 cs 文件的子目录下面建立一个 web.config 文件。在里面写上单独配置的代码,比如给 App_Code 的:
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<compilation debug="true">
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/doc:c:/App_Code.xml" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</compilers>
</compilation>
</system.web>
</configuration>
这样子编译的时候就会为 App_Code 目录里面的文件使用这个 Web.config,而不会受其它的编译配置的影响,也不会影响其它目录的编译配置。
关于 compiler 里面的编译选项还有更多的参数,参见 MSDN 中的相关内容 。
在 MSDN 社区看到一个 MSFT 的版主 有个解决的办法。他的方法是在根目录下的 Web.config 中加入一个配置:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CSharp.CSharpCodeProvider, System,
Version=2.0.3600.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089"
compilerOptions="/doc:c:/app_code.xml" />
</compilers>
</system.codedom>
但是这样的话,因为所有的 .cs 文件都用这个配置,最终只会生成一个 app_code.xml 文件,里面的内容去不一定是 App_Code 里面的代码的内容而是要看最后编译的那个 cs 文件是哪个。他又提出为了防止这种问题,需要在每一个 aspx 文件里面加上,不同的文件的 outX 起来同的名字:
<%@ Page="" CompilerOptions="/doc:c:/outX.xml" %>
这样就可以给每一个文件都生成不同的 XML 文档。
但是这样也会产生其它的问题。本来我的项目中只生成一个 App_web_xxxx.dll 的(因为全部的 aspx 文件都在一个目录里面),但是这样单独配置后将会生成若干个 dll 文件。而且如果某个 aspx 文件忘记写了上面那句话,那么最终的 app_code.xml 文件的内容又会不对了。
经过我若干次尝试,发现还有更好的办法。在各个有 cs 文件的子目录下面建立一个 web.config 文件。在里面写上单独配置的代码,比如给 App_Code 的:
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<compilation debug="true">
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" compilerOptions="/doc:c:/App_Code.xml" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
</compilers>
</compilation>
</system.web>
</configuration>
这样子编译的时候就会为 App_Code 目录里面的文件使用这个 Web.config,而不会受其它的编译配置的影响,也不会影响其它目录的编译配置。
关于 compiler 里面的编译选项还有更多的参数,参见 MSDN 中的相关内容 。
相关文章推荐
- 用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档
- SEO_ASP.net SEO优化(包含URL地址重写\viewState移动和压缩至服务器\SEO信息XML生成_根据URL地址重写文件)\web网站内容压缩 源码公开.本人授权可使用于商业项目。
- ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目
- 用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档
- ASP.NET 动态查找数据 并且生成xml文档 同时使用xslt转换为xhtml
- 用Swashbuckle给ASP.NET Core的项目自动生成Swagger的API帮助文档
- 百度地图和高德地图坐标系的互相转换 四种Sandcastle方法生成c#.net帮助类帮助文档 文档API生成神器SandCastle使用心得 ASP.NET Core
- 在asp.net中无需服务器安装word,利用xml生成word文档
- ASP.NET MVC 5使用Swagger生成API文档
- 谈asp.net解决方案的项目生成时的输出路径
- [SEO]让你的Asp.Net网站自动生成Sitemap——XmlSitemap
- Asp.net动态生成Word文档并填充数据
- 用Sandcastle生成.net项目API文档
- ASP.NET---动态生成Word文档
- asp.net生成后找不到bin目录,更重要的是没有项目dll
- asp.net生成xml
- Sandcastle生成项目文档
- ASP.NET Web API 使用Swagger生成在线帮助测试文档
- 四种Sandcastle方法生成c#.net帮助类帮助文档
- asp.net生成word文档服务器配置