关于无aspx文件部署,我的一些探索心得
前几天看到 无ASPX文件部署(续) 突然感觉这个功能不错,于是就开始了几天了探索。
要实现无aspx文件的部署,必须使用一个工具——The ASP.NET Compilation tool (Aspnet_compiler.exe)。
根据MSDN,这个工具是在.net 2.0才添加的新工具。
-?是看帮助,这个大家都知道
-m 是指定一个具体的本地目录
-v 是指定一个虚拟目录
-p 是指定一个物理目录
这里大概就是用这三个,其他的是用来用强命名发布等一些功能。
我编译用的命令是
aspnet_compiler -v /test -p g:\website g:\website1
我把g:\website里的web app编译到g:\website1,不知道为什么非要用-v指定一个虚拟目录就不得而知了,我的计算机上面没有一个test的虚拟目录,可是也编译成功了,哪位大哥可以解释一下,我觉得指定虚拟目录的目的可能是为了编译时用的。
编译后会包含只有一句:“This is a marker file generated by the precompilation tool, and should not be deleted!”的若干个与原来aspx同名的文件。
还会在bin目录中生成一个dll文件和的若干个与原来aspx的文件项对应的compiled,我用.Net Reflector打开发现它不是一个中间文件,后才用记事本打开,发现是一个xml格式的标记文件,里面记载了一些原始的信息,比如对应页面的文件名和后台文件名。
在这里可以看到我们以前编译的时候用-v指定的那个虚拟目录。真的很不解,对于这个问题。
发布的时候删除那些空的aspx和compiled也没有任何问题,web app一切正常。
这个功能还好,特别是在保护我们的源码方面,不过也还是有一些问题,如果程序加入了一些第三方的控件,可能会出现好多问题,我的这个就出现问题了。
编译后原来的原来的web.config还在,内容也在。
而vs 2005里的发布
build - publish 只是编译了后台的.cs .vb的文件,aspx文件里面的内容只是重新改写了一些<%@ page %>里面的一些引用。
我个人认为虽然可以用上面的工具把这些aspx文件里面的东西隐藏起来,不过细细想想aspx里面也的确没有什么值钱的东西啊,都是些控件的标识,如果把外观用css或者theme来做,那只能看到一堆<asp:XXXXX>的东西,而且如果客户端浏览看到的也只有html代码。
不过如果一些人喜欢把代码写在aspx页面内部,而不是分割代码的话,那这个工具用处就很大了。
其实用vs 2005的publish处理一下发布感觉就很好了。
这个工具好的一点就是可以只发布一个Dll和一些其他的资源文件就可以了,不用一次性部署很多很多的文件。可是一般部署都是整个目录拷贝啊!
不知道微软做了个这个东东是什么用意。
我很想知道关于这个工具的一些其他问题,希望大虾们给小虾米们点帮助。
要实现无aspx文件的部署,必须使用一个工具——The ASP.NET Compilation tool (Aspnet_compiler.exe)。
根据MSDN,这个工具是在.net 2.0才添加的新工具。
aspnet_compiler [-?] [-m metabasePath | -v virtualPath [-p physicalPath]] [[-u] [-f] [-d] targetDir] [-c] [-errorstack] [-fixednames] [-nologo] [-keyfile file | -keycontainer container [-aptca] [-delaysign]]这个工具的参数就是上面的了,可以通过SDK Command Prompt来调用,这个比cmd方便点,主要是不用一个一个进目录了。
-?是看帮助,这个大家都知道
-m 是指定一个具体的本地目录
-v 是指定一个虚拟目录
-p 是指定一个物理目录
这里大概就是用这三个,其他的是用来用强命名发布等一些功能。
我编译用的命令是
aspnet_compiler -v /test -p g:\website g:\website1
我把g:\website里的web app编译到g:\website1,不知道为什么非要用-v指定一个虚拟目录就不得而知了,我的计算机上面没有一个test的虚拟目录,可是也编译成功了,哪位大哥可以解释一下,我觉得指定虚拟目录的目的可能是为了编译时用的。
编译后会包含只有一句:“This is a marker file generated by the precompilation tool, and should not be deleted!”的若干个与原来aspx同名的文件。
还会在bin目录中生成一个dll文件和的若干个与原来aspx的文件项对应的compiled,我用.Net Reflector打开发现它不是一个中间文件,后才用记事本打开,发现是一个xml格式的标记文件,里面记载了一些原始的信息,比如对应页面的文件名和后台文件名。
在这里可以看到我们以前编译的时候用-v指定的那个虚拟目录。真的很不解,对于这个问题。
发布的时候删除那些空的aspx和compiled也没有任何问题,web app一切正常。
这个功能还好,特别是在保护我们的源码方面,不过也还是有一些问题,如果程序加入了一些第三方的控件,可能会出现好多问题,我的这个就出现问题了。
编译后原来的原来的web.config还在,内容也在。
而vs 2005里的发布
build - publish 只是编译了后台的.cs .vb的文件,aspx文件里面的内容只是重新改写了一些<%@ page %>里面的一些引用。
我个人认为虽然可以用上面的工具把这些aspx文件里面的东西隐藏起来,不过细细想想aspx里面也的确没有什么值钱的东西啊,都是些控件的标识,如果把外观用css或者theme来做,那只能看到一堆<asp:XXXXX>的东西,而且如果客户端浏览看到的也只有html代码。
不过如果一些人喜欢把代码写在aspx页面内部,而不是分割代码的话,那这个工具用处就很大了。
其实用vs 2005的publish处理一下发布感觉就很好了。
这个工具好的一点就是可以只发布一个Dll和一些其他的资源文件就可以了,不用一次性部署很多很多的文件。可是一般部署都是整个目录拷贝啊!
不知道微软做了个这个东东是什么用意。
我很想知道关于这个工具的一些其他问题,希望大虾们给小虾米们点帮助。