2004-5-16 + 命令行csc编译及bin文件夹的问题
asp.net程序是经过编译执行的,这个大家都知道,尤其是使用Codebehind的时候,必须先把背后的.cs文件编译形成.dll文件,然后才可以执行。这个过程,如果你有vs.net,那很轻松就可以完成,但如果没有,那就得借助命令行了。
仔细查一下.net framework sdk文档,可以找到关于这个话题的详细说明,好象没有必要专门贴一篇文章,但是今下午我在用的时候却发现了一个问题,文档中说“运行VCVARS32.BAT”,但当你进入.net framework sdk的安装目录的bin文件夹下,却并没有发现VCVARS32.BAT文件,这个时候只能使用sdkvars.bat文件了,其实这个的作用应该是和那个“传说中的”VCVARS32.BAT相同。当你运行了sdkvars后,就可以使用先前“被封印的”csc命令了。
然后就可以用csc命令编译.cs文件了,这个时候可能又会出现一个问题,按照大部分书上的说法,你只要指定了Inherits和Codebehind,并且用csc编译了那个背后的.cs,就可以运行这个aspx文件,但实际上并不是这样,错误提示为“找不到指定的类”。解决办法就是在根目录下建立一个bin文件夹,然后把编译产生的.dll文件放到里面去,这样问题应该就解决了。如果还是找不到,那问题可能是你的bin文件夹并不是在根目录最上面,而是在根目录下的某个文件夹里,这个时候你需要做的就是把它拖到最上面。
下面给出命令行示例,这个其实在.net framework sdk文档里就可以找到,不过为了方便,还是复制了过来:
编译 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
编译 File.cs 以产生 File.dll: csc /target:library File.cs这个就是我们使用最多的一个命令,其实可以简单的写成csc /t:library File.cs,另外的一个写法是
csc /out:mycodebehind.dll /t:library mycodebehind.cs,这个可以自己指定输出的文件名。
csc /out:mycodebehind.dll /t:library mycodebehind.cs mycodebehind2.cs,这个的作用是把两个cs文件装到一个.dll文件里,很有用哦。
关于这个话题在经典论坛里的讨论帖----点击这里查看------