net编译
‘壹’ 精品赏析:一个.NET程序在编译和运行时都做了些什么
run-time)和运行原理 (CPU-specific binary or pseudo-code)的疑问。 这里是一个简单的回答:当你编译一个C#应用程序或任何一种CLS(Commmon Language Specification)兼容的语言时,它将首先被编译成一种称为IL (Intermediate Language)的伪代码(pseudo-code)。在这个应用程序第一次 被运行的时候,这种IL代码将被编译成机器代码,用于执行。也就是说从源代码 到得到运行结果,进行了两次编译。事实上,只有那些被真正使用的函数代码 才会被进行第二次编译。下面揭示开发过程中被隐藏起来的细节: 1) 你用C#开发一些程序 2) 用C#编译器或CLS兼容的编译器编译成EXE 3) 编译器将生成的IL代码和附加信息(manifest)放入拥有一个标准PE头的Win32 可执行文件的只读部分。 4) 编译器在创建这个可执行文件时导入(import)一个名为_CorExeMain的函数。 这个函数是.NET EE(execution engine)--.NET运行期引擎的入口函数。 5) 当执行这个Win32可执行文件时,因为其主要是依赖于DLL的PE文件,操作系 统将会调用位于MSCorEE.DLL中的_CorExeMain函数。 6) 操作系统通过PE文件里的进入点,调用MSCorEE.DLL。并能保证在Windows里 可以有很多程序同时运行。 7) 因为操作系统不能执行.NET IL代码,EXE里的进入点只是简单的中介,它将 指示操作系统调用_CorExeMain函数。 8) 随后_CorExeMain函数开始解释位于PE文件中的IL代码。 9) 因为IL是不能被直接执行的, .NET EE使用称为JITter (Just In Time compiler) 这一即时编译过程只在第
‘贰’ .NET源代码执行前要经过两次编译,分别是哪两次
第一次编译使用.net Framework代码时,把代码编译为MSIL(即微软中间语言)这些代码不专用于任何操作系统,它是独立于机器,CPU和操作系统的.
第二次不同种类的编绎器,生成本地机器代码
‘叁’ .net是动态编译还是静态编译该如何解决
------解决方案-------------------------------------------------------- 生成时不同的语言使用不同的编译器进行一次编译,成为IL代码。 IL代码通过JIT动态编译成为机器语言。 ------解决方案-------------------------------------------------------- ------解决方案-------------------------------------------------------- visual c++.net可以/CLR ------解决方案-------------------------------------------------------- 可以有动态和静态的说。 ------解决方案-------------------------------------------------------- 大致有两种情形,动态和静态: 1. 一般情况下是JIT (Just in time)。CLR在执行方法的时候会调用一个Stub,这个Stub如过函数没有被Jit则指向JIT函数,执行则会被自动JIT,然后Patch返回地址,返回之后直接执行JIT之后的本地代码,如果已经JIT,则指向JIT后的代码 2. 如果Assembly已经被NGEN过,这种情况下方法的Stub直接指向NGEN之后的代码,这个代码已经被Prejit过,可以直接调用而无需JIT参与 ------解决方案--------------------------------------------------------
‘肆’ 简述.net程序编译执行机制
.NET执行机制其实同很多的编程语言有一些不同。一般的高级程序语言会直接将代码编译成为机器语言,之后由本地机执行这些高效的机器代码从而实现编译过程。而.NET中的编译机制会在中间多一个环节,就是先将高级语言(如C#、VB)编译成为中间语言(IL),这些中间语言是.NET框架中所有的语言编译后的结果。这样说吧,比如我用C#、VB语言编写了两个类,编译之后的中间语言其实看起来是一样的,这就显示实现了.NET平台跨语言的这一事实。当然中间语言最终还是要编译成为机器代码以用于最终的本地机的运行。
‘伍’ .net源码如何编译
你这个应该是CS程序,下载一个Visual Studio 2010 然后在项目里新建一个项目--windows窗体程序。 把你现在这个项目导入进去就可以了。 很简单。 最后按下F5就可以编译了
‘陆’ 如何使用 Visual Studio.Net 编译和执行 C# 程序,步骤是
启动 Visual Studio。
在菜单栏上,选择 File -> New -> Project。
从模板中选择 Visual C#,然后选择 Windows。
选择 Console Application。
为的项目制定一个名称,然后点击 OK 按钮。
新项目会出现在解决方案资源管理器(Solution Explorer)中。
在代码编辑器(Code Editor)中编写代码。
点击 Run 按钮或者按下 F5 键来运行程序。会出现一个命令提示符窗口(Command Prompt window),显示 Hello World。
打开一个文本编辑器,添加上面提到的代码。
保存文件为 helloworld.cs。
打开命令提示符工具,定位到文件所保存的目录。
键入 csc helloworld.cs 并按下 enter 键来编译代码。
如果代码没有错误,命令提示符会进入下一行,并生成 helloworld.exe 可执行文件。
接下来,键入 helloworld 来执行程序。
将看到 "Hello World" 打印在屏幕上。
您也可以使用命令行代替 Visual Studio IDE 来编译 C# 程序:
‘柒’ 简述asp.net 的编译过程
从技术上讲,ASP.NET模块分析ASPX文件的内容,并将文件内容分解成单独的命令以建立代码的整体结构。完成此工作后,ASP.NET模块将各命令放置到预定义的类定义中(不需要放在一起,也不需要按编写顺序放置)。然后使用这个类定义一个特殊的ASP.NET对象Page。该对象要完成的任务之一就是生成HTML流,这些HTML流可以返回到IIS,再从IIS返回到客户。简言之,在用户请求IIS服务器提供一个页面时,IIS服务器就根据页面上的文本、HTML和代码(这对我们来说是最重要的)建立该页面。
‘捌’ 怎么用net编译cs文件
操作如下:
打开命令窗口->输入cmd到控制台->cd C:WINDOWSMicrosoft.NETFrameworkv1.1.4322转到vs.net安装的该目录下->执行csc命令csc /target:library File.cs->在该目录下产生一个对应名字的.dll文件(前提:把.cs文件放到C:WINDOWSMicrosoft.NETFrameworkv1.1.4322目录下)
csc命令的方式很多,请参考以下,
------------------------------------
译 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文件里。。。
‘玖’ c# .net 怎么编译
使用Visual Studio创建一个Web ASP.net项目,把这些文件添加进项目,然后编译即可。
编译出的dll在Bin目录下。
‘拾’ 在.NET中,程序编译过程
.NET平台中代码的物理单元是可移植可执行程序(protableexecutable,PE)格式,编译程序和库时,和平常一样生成EXE与DLL文件,但在.NET框架下,任何可执行程序项目都链接到公共语言运行库,并由它代理编译和执行。
.NET中程序编译的最主要部分是汇编(assembly),汇编包括一个manifest,它是一组元数据,标识汇编向其他应用程序提供的文件和类型;manifest还可以包含强名称(strongname)、组合汇编名、版本信息和可选文化信息。在使用强名称的汇编中,元数据包含一个公用密钥签名,公共语言运行库用其验证汇编自编译之后是否发生改变。
汇编还可以包括数字签名,例如用验证码(authenticodecertificate)验证代码源,以解决在公共语言运行库保证汇编签名的真实性问题。
汇编分为专用汇编和共享汇编。专用汇编只在安装这个汇编的应用程序中使用,而共享汇编则安装在全局汇编缓冲区(globalassemblycache,GAC)中,全局汇编缓冲区用汇编的引用计数和版本信息管理库,包括框架的基类库(baseclasslibrary,BCL),并通过公共语言运行库避免因库的版本冲突而形成DLLHell的情形。
选择专用汇编和共享汇编是一个重要决策。将汇编安装到全局缓冲区后,就可以在多个应用程序中使用汇编的一个备份,但是还需要用WindowsInstaller之类的安装程序将应用程序安装到计算机上。如果使用专用汇编,则得到Microsoft所谓的"XCOPY部署",这样用户可以将应用程序复制到目标计算机上,方便地进行安装。
.NET程序编译过程如图1.2所示。