概念: 程序集的概念说简单了就是按逻辑组合起来再放入物理文件中的功能.
好处: 简化代码的部署,另外一个就是解决版本的冲突.
其实还有一点,我不好说是好是坏(因为我不支持开源,也不反对开源,不过说起这个,我倒是希望大家多把自己练习的完整代码发布到thc123.com的代码区,这里我已经找了很多不错的学习代码,但是我个人时间有限,这里主要为学习而开,大家一起付出吧,毕竟你练习的那些东西也许其他朋友也需要,所以无论你代码写得如何,都传到 thc123.com 上面,大家相互学习,共同进步吧。)
这点就是把我们的代码封状起来后一般人就看不出你的逻辑了,起到保护知识产权的作用,当然,最好是再混淆下,这样就很难轻易的知道你怎么搞的了。
他主要包含两个部分.
1. 程序集清单 : 包含程序集的元数据, 简单说就是包含了程序集的内容和作用和版本号等等,在生成程序集的时候生成的.
2.MSIL代码 : (Microsoft Intermediate Language) ,这个是.net用于通信的语言,可以是vb.net,或者c#等, 在编译期间呢,统一都搞成了MSIL了.(在这里要提醒下,如果是你一个项目中完全未编译的文件里面同时有vb和c#的话呢,嘿嘿,不好意思,那你娃娃就要亏大了。所以。。。。。)
所以还是看个实例吧.
看了实例,我们再看刚才输入的那些乱七八糟的玩意是为什么(下面是我从msdn上复制的)
命令行语法规则
在解释哦作系统命令行上给出的参数时,C# 编译器使用下列规则:
-
参数用空白分隔,空白可以是一个空格或制表符。
-
^ 字符 (^) 未被识别为转义符或者分隔符。该字符在被传递给程序中的 argv 数组前,完全由哦作系统的命令行分析器进行处理。
-
无论其中有无空白,包含在双引号 ("string") 中的字符串均被解释为单个参数。带引号的字符串可以嵌入在参数内。
-
前面有反斜杠的双引号 (\") 被解释为原义双引号字符 (")。
-
反斜杠按其原义解释,除非它们紧位于双引号之前。
-
如果偶数个反斜杠后跟双引号,则每对反斜杠中的一个反斜杠放置在 argv 数组中,并且双引号被解释为字符串分隔符。
-
如果奇数个反斜杠后跟双引号,则每对反斜杠中的一个反斜杠放置在 argv 数组中,双引号由其余的反斜杠“转义”,使原义双引号 (") 被放置在 argv 数组中。
命令行示例
-
编译 File.cs 以产生 File.exe:
csc File.cs
-
编译 File.cs 以产生 File.dll:
csc /target:library File.cs
-
编译 File.cs 并创建 My.exe:
csc /out:My.exe File.cs
-
通过使用优化和定义 DEBUG 符号,编译当前目录中所有的 C# 文件。输出为 File2.exe:
csc /define:DEBUG /optimize /out:File2.exe *.cs
-
编译当前目录中所有的 C# 文件,以产生 File2.dll 的调试版本。不显示任何徽标和警告:
csc /target:library /out:File2.dll /warn:0 /nologo /debug *.cs
-
将当前目录中所有的 C# 文件编译为 Something.xyz(一个 DLL):
csc /target:library /out:Something.xyz *.cs
C# 编译器和 C++ 编译器输出之间的差异
作为调用 C# 编译器的结果,没有创建任何对象 (.obj) 文件;直接创建输出文件。因此,C# 编译器不需要链接器
编译进行的准备工作:其实这一步就让很多人头大得要死,为什么这样说呢,因为我一直都以为我很聪明,我记的学那会整了一周都没结果,呵呵,不过在那段时间我也学了几种方法.
1. 在我的电脑上点右键-->属性-->高级-->环境变量-->在下面哪个框里面双击path,在后面加上
;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727 (仅针对.net2.0的哦,如果是1.1的话这里要改变下,按照如下所说)
这时候有看官要问,上面这句是那里来的,其实很简单,你在你的系统盘里面搜索 csc.exe 就知道了.
接下来我们在运行里面键入 cmd ,然后键入 csc /target:library /out:要输出的文件 被编译的地址 ,然后回车.ok
2.我们整一个批处理文件.也就是专业'俗'语称的 命令行生成.
下面这句是将一个目录中所有的.cs文件生成一个dll文件的
csc /target:library /out:E:\net\moshigaishu\Bin\test.dll E:\net\moshigaishu\test\*.cs
3.最简单的办法,呵呵直接在Visual Studio 2005 命令提示里面运行即可.
如果3这个出错的话就按照msdn提供的方法,
1.运行cmd
2.把当前目录该成你系统上Common7\Tools 子目录的位置
3.键入
1. 在我的电脑上点右键-->属性-->高级-->环境变量-->在下面哪个框里面双击path,在后面加上
;%SystemRoot%\Microsoft.NET\Framework\v2.0.50727 (仅针对.net2.0的哦,如果是1.1的话这里要改变下,按照如下所说)
这时候有看官要问,上面这句是那里来的,其实很简单,你在你的系统盘里面搜索 csc.exe 就知道了.
接下来我们在运行里面键入 cmd ,然后键入 csc /target:library /out:要输出的文件 被编译的地址 ,然后回车.ok
2.我们整一个批处理文件.也就是专业'俗'语称的 命令行生成.
下面这句是将一个目录中所有的.cs文件生成一个dll文件的
csc /target:library /out:E:\net\moshigaishu\Bin\test.dll E:\net\moshigaishu\test\*.cs
3.最简单的办法,呵呵直接在Visual Studio 2005 命令提示里面运行即可.
如果3这个出错的话就按照msdn提供的方法,
1.运行cmd
2.把当前目录该成你系统上Common7\Tools 子目录的位置
3.键入
VSVARS32
以运行 VSVARS32.bat。 警告 |
---|
VSVARS32.bat 可能因计算机的不同而变化。不要用其他计算机上的 VSVARS32.bat 替换丢失或损坏的 VSVARS32.bat 文件。重新运行安装程序以替换丢失的文件。 |
4.本来不想说发布网站的事,反正都说到这里了,顺便说下也是可以的.
我们演示一下下了。
注意下,发布的时候你的IIS有极大的可能找你麻烦,那么怎么做呢?
我在被痛苦折磨以后找出了N套解决方案
1.重新注册你的asp.net
小 1: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -u 复制前面的得了,卸载asp.net
小 2: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i 复制前面的,注册
2.重新装IIS
这个不要我说了,你自己搞吧。这个搞完以后有可能还是不行,那你就重复上面的步骤注册asp.net吧。