如何使用CSC.EXE编译DLL(c编译成dll)
大家好,今天来为大家解答关于如何使用CSC.EXE编译DLL这个问题的知识,还有对于c编译成dll也是一样,很多人还不知道是什么意思,今天就让我来为大家分享这个问题,现在让我们一起来看看吧!
1cs怎么编译成dll
c#下将.cs文件编译成dll
调用方法:开始 所有程序 Microsoft Visual Studio 2005 Visual Studio Tools Visual Studio 2005 命令提示 打开后,输入csc/?查看编译选项.注意:要将命名空间也写进csc里啊.
/out:file 输出文件名(默认值: 包含主类的文件或第一个文件的基名称)
/target:exe 生成控制台可执行文件(默认) (缩写: /t:exe)
/target:winexe 生成 Windows 可执行文件 (缩写: /t:winexe)
/target:library 生成库 (缩写: /t:library)
/target:module 生成能添加到其他程序集的模块 (缩写: /t:module)
/define:symbol list 定义条件编译符号 (缩写: /d)
/doc:file 要生成的 XML 文档文件
2c#使用命令行编译生成dll文件
C#使用csc.exe编译程序,csc使用/target:library(缩写: /t:library)参数生成Dll文件。
其它参数如下:
Visual C# 编译器选项
- 输出文件 -
/out:文件 指定输出文件名(默认值: 包含主类的文件或第一个文件的基名称)
/target:exe 生成控制台可执行文件(默认) (缩写: /t:exe)
/target:winexe 生成 Windows 可执行文件 (缩写: /t:winexe)
/target:library 生成库 (缩写: /t:library)
/target:module 生成能添加到其他程序集的模块 (缩写: /t:module)
/target:appcontainerexe 生成 Appcontainer 可执行文件 (缩写: /t:appcontainerexe)
/target:winmdobj 生成 WinMDExp 使用的 Windows 运行时中间文件 (缩写: /t:winmdobj)
/doc:文件 要生成的 XML 文档文件
/platform:字符串 限制可以在其上运行此代码的平台: x86、Itanium、x64、arm、anycpu32bitpreferred 或 anycpu。默认值为 anycpu。
- 输入文件 -
/recurse:通配符 根据通配符规范,包括当前目录和子目录下的所有文件
/reference:别名=文件 使用给定的别名从指定的程序集文件引用元数据 (缩写: /r)
/reference:文件列表 从指定的程序集文件引用元数据 (缩写: /r)
/addmodule:文件列表 将指定的模块链接到此程序集中
/link:文件列表 嵌入指定的互操作程序集文件中的元数据 (缩写: /l)
- 资源 -
/win32res:文件 指定 Win32 资源文件(.res)
/win32icon:文件 对输出使用此图标
/win32manifest:文件 指定 Win32 清单文件(.xml)
/nowin32manifest 不包括默认 Win32 清单
/resource:资源信息 嵌入指定的资源 (缩写: /res)
/linkresource:资源信息 将指定的资源链接到此程序集 (缩写: /linkres)
其中 resinfo 的格式是 file[,string name[,public|private]]
- 代码生成 -
/debug[+|-] 发出调试信息
/debug:{full|pdbonly} 指定调试类型(“full”是默认类型,可以将调试程序附加到正在运行的程序)
/optimize[+|-] 启用优化 (缩写: /o)
- 错误和警告 -
/warnaserror[+|-] 将所有警告报告为错误
/warnaserror[+|-]:警告列表 将特定警告报告为错误
/warn:n 设置警告等级(0-4) (缩写: /w)
/nowarn:警告列表 禁用特定的警告消息
- 语言 -
/checked[+|-] 生成溢出检查
/unsafe[+|-] 允许“不安全”代码
/define:符号列表 定义条件编译符号 (缩写: /d)
/langversion:字符串 指定语言版本模式: ISO-1、ISO-2、3、4、5 或 Default
- 安全性 -
/delaysign[+|-] 仅使用强名称密钥的公共部分对程序集进行延迟签名
/keyfile:文件 指定强名称密钥文件
/keycontainer:字符串 指定强名称密钥容器
/highentropyva[+|-] 启用高平均信息量的 ASLR
- 杂项 -
@文件 有关更多选项,请阅读响应文件
/help 显示此用法信息 (缩写: /?)
/nologo 取消编译器版权信息
/noconfig 不要自动包含 CSC.RSP 文件
- 高级 -
/baseaddress:地址 要生成的库的基址
/bugreport:文件 创建“Bug 报告”文件
/codepage:n 指定打开源文件时要使用的代码页
/utf8output 以 UTF-8 编码格式输出编译器消息
/main:类型 指定包含入口点的类型(忽略所有其他可能的入口点) (缩写: /m)
/fullpaths 编译器生成完全限定路径
/filealign:n 指定用于输出文件节的对齐方式
/pdb:文件 指定调试信息文件名(默认值: 扩展名为 .pdb 的输出文件名)
/errorendlocation 输出每个错误的结束位置的行和列
/preferreduilang 指定首选输出语言名称。
/nostdlib[+|-] 不引用标准库(mscorlib.dll)
/subsystemversion:字符串 指定此程序集的子系统版本
/lib:文件列表 指定要在其中搜索引用的附加目录
/errorreport:字符串 指定如何处理内部编译器错误: prompt、send、queue 或 none。默认值为 queue。
/appconfig:文件 指定一个包含程序集绑定设置的应用程序配置文件
/moduleassemblyname:字符串 此模块所属程序集的名称
3通过csc编译后的dll如何在项目中引用
打开[开始菜单]-[所有程序]-[Microsoft Visual Studio 2008]-[Visual Studio Tools]-[Visual Studio 2008 命令提示]
先把根目录定位到1个盘,然后把你的.cs文件拷贝放到这个目录下,譬如说F盘
F:\后敲入命令
csc /t:library /out:OfficeInstructionsBusiness.dll OfficeInstructionsBusiness.cs
敲入回车,你就可以在F盘目录下看到生成好的dll文件,最后把dll拷贝到你的IIP.Data.OfficeInfo_2项目文件夹中去.
4如何配置CSC编译器
1.配置C#命令行编译器:
我的电脑 —〉高级 —〉环境变量 —〉Path —〉添
加";C:\Windows\Microsoft.NET\Framework\v2.0.50727"(Path的最后一个路径虽版本
的改变而改变)。csc.exe(C#命令行编译器)就放在该目录下。通过csc /?来查看所有参
数。
2.配置其它.NET命令行工具
我的电脑 —〉高级 —〉环境变量 —〉Path —〉添加";D:\Program
Files\Microsoft Visual Studio 8\SDK\v2.0\Bin"(Path随安装目录的改变而改变,如
果安装在C:\,则为";C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin"
3.通过csc命令行编译器来编译C#文件,以下为一个例子
1)在D盘下新建一个名为test.txt文本文件,输入以下文本后保存为test.cs文件
复制代码 代码如下:
//一个简单的C#应用程序.
using System;
class TestApp
{
public static void Main()
{
Console.WriteLine("Test! 1,2,3");
Console.ReadKey();
}
}
2)运行 —〉cmd —〉D:\ —〉csc D:\test.cs, 编译成功后在D盘下生成test.exe可执行文件
3)输入test.exe,回车,显示结果(Test! 1,2,3)
4.接下来通过引入System.Windows.Forms命名空间来生成Windows Forms程序,test.cs
修改为如下后再次编译
复制代码 代码如下:
//一个简单的C#应用程序.
using System;
//一定要加上下面一行
using System.Windows.Forms;
class TestApp
{
public static void Main()
{
Console.WriteLine("Test! 1,2,3");
MessageBox.Show("Hello...","Application");
Console.ReadKey();
}
}
5.使用csc.exe编译多个源文件
复制代码 代码如下:
//HelloMessage.cs
using System;
using System.Windows.Forms;
class HelloMessage
{
public void Speak()
{
MessageBox.Show("Hello");
}
}
//Test.cs
using System;
class TestApp
{
public static void Main()
{
Console.WriteLine("Testing! 1,2,3");
HelloMessage h = new HelloMessage();
h.Speak();
}
}
参数/out:编译结果的存放位置和名称
复制代码 代码如下:
csc/out:e:\a.exe test.cs HelloMessage.cs
或者编译当前目录下的所有cs文件: csc/out:e:\a *cs
5.net中怎样写dll文件?
使用csc命令将.cs文件编译成.dll的过程很多时候,我们需要将.cs文件单独编译成.dll文件, 操作如下:打开命令窗口-输入cmd到控制台-cd C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322转到vs.net安装的该目录下-执行csc命令csc /target:library File.cs-在该目录下产生一个对应名字的.dll文件(前提:把.cs文件放到C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322目录下)csc命令的方式很多,请参考以下译File.cs 以产生 File.execsc File.cs 编译 File.cs 以产生 File.dllcsc /target:library File.cs 编译 File.cs 并创建 My.execsc /out:My.exe File.cs 通过使用优化和定义 DEBUG 符号,编译当前目录中所有的 C# 文件。输出为 File2.execsc /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.dllcsc /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文件里举例(摘于网络)一、 动态链接库 什么是动态链接库?DLL三个字母对于你来说一定很熟悉吧,它是Dynamic Link Library 的缩写形式,动态链接库(DLL) 是作为共享函数库的可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。 和大多数程序员一样,你一定很使用过DLL吧。也曾感受到它的带给你程序设计和编码上的好错吧今天我想和大家探讨一个主题:如何在C#创建和调用DLL(动态链接库), 其实在很大意义上而讲,DLL让我更灵活的组织编写我们的应用程序,作为软件设计者,可一个根据它来达到很高的代码重用效果。下面我来介绍一下在C#中如何创建和调用DLL。二、准备工作 我们需要对我们接下来要做的事情做个简单的介绍,在本文我们将利用C#语言创建一个名为 MyDLL.DLL的动态链接库,在这个动态链接库文件中我们将提供两个功能一个是对两个参数交换他们的值,另一个功能是求两个参数的最大公约数。然后创建一个应用程序使用这个DLL。运行并输出结果。三、创建DLL让我们创建以下三个C#代码文件:1、 MySwap.csview plaincopy to clipboardprint?//该语句不要加入到程序中using System; namespace MyMethods { public class SwapClass { public static bool Swap(ref long i,ref long j) { i = i+j; j = i-j; i = i-j; return true; } } }2、MyMaxCD.csview plaincopy to clipboardprint?//该语句不要加入到程序中using System; namespace MyMethods { public class MaxCDClass { public static long MaxCD(long i, long j) { long a,b,temp; if(ij) { a = i; b = j; } else { b = i; a = j; } temp = a % b; while(temp!=0) { a = b; b = temp; temp = a % b; } return b; } } } 需要注意的是:我们在制作这两个文件的时候可以用Visual Studio.NET或者其他的文本编辑器,就算是记事本也可以。这两个文件虽然不在同一个文件里面,但是他们是属于同一个namespace(名称空间)这对以后我们使用这两个方法提供了方便。当然他们也可以属于不同的名称空间,这是完全可以的,但只是在我们应用他们的时候就需要引用两个不同的名称空间,所以作者建议还是写在一个名称空间下面比较好。 接下来的任务是把这两个cs文件变成我们需要的DLL文件。方法是这样的:在安装了Microsoft.NET Framework的操作系统上,我们可以在Windows所在目录下找到Microsoft.NET目录。在这个目录下面提供了C#的编译器,CSC.EXE运行:csc /target:library /out:MyDLL.DLL MySwap.cs MyMaxCD.cs,完成后可在本目录下面找到我们刚才生成的MyDLL.DLL文件/target:library 编译器选项通知编译器输出 DLL 文件而不是 EXE 文件。后跟文件名的 /out 编译器选项用于指定 DLL 文件名。如果/out后面不跟文件名编译器使用第一个文件 (MySwap.cs) 作为 DLL 文件名。生成的文件为MySwap.DLL文件。 OK!我们创建动态链接库文件的任务完成了,现在是我们享受劳动成果的时候了,下面我将介绍如何使用我们所创建的动态链接库文件。 四、使用DLL 我们简单写一个小程序来测试一下我们刚才写的两个方法是否正确,好吧,跟我来:MyClient.csview plaincopy to clipboardprint?//该语句不要加入到程序中using System; using MyMethods; //这里我们引用刚才定义的名称空间,如果刚才的两个文件我们写在两个不同的名称空间 class MyClient { public static void Main(string[] args) { if (args.Length != 2) { Console.WriteLine("Usage: MyClient num1 num2"); return; } long num1 = long.Parse(args[0]); long num2 = long.Parse(args[1]); SwapClass.Swap(ref num1,ref num2); // 请注意,文件开头的 using 指令使您得以在编译时使用未限定的类名来引用 DLL 方法 Console.WriteLine("The result of swap is num1 = {0} and num2 ={1}",num1, num2); long maxcd = MaxCDClass.MaxCD(num1,num2); Console.WriteLine("The MaxCD of {0} and {1} is {2}",num1, num2, maxcd); } }若要生成可执行文件 MyClient.exe,请使用以下命令行:csc /out:MyClient.exe /reference:MyLibrary.DLL MyClient.cs/out 编译器选项通知编译器输出 EXE 文件并且指定输出文件名 (MyClient.exe)。/reference 编译器选项指定该程序所引用的 DLL 文件。五、执行若要运行程序,请输入 EXE 文件的名称,文件名的后面跟两个数字,例如:MyClient 123 456六、输出The result of swap is num1 = 456 and num2 = 123The MaxCD of 456 and 123 is 3七、小结动态链接具有下列优点: 1、节省内存和减少交换操作。很多进程可以同时使用一个 DLL,在内存中共享该 DLL 的一个副本。相反,对于每个用静态链接库生成的应用程序,Windows 必须在内存中加载库代码的一个副本。 2、节省磁盘空间。许多应用程序可在磁盘上共享 DLL 的一个副本。相反,每个用静态链接库生成的应用程序均具有作为单独的副本链接到其可执行图像中的库代码。 3、升级到 DLL 更为容易。DLL 中的函数更改时,只要函数的参数和返回值没有更改,就不需重新编译或重新链接使用它们的应用程序。相反,静态链接的对象代码要求在函数更改时重新链接应用程序。 4、提供售后支持。例如,可修改显示器驱动程序 DLL 以支持当初交付应用程序时不可用的显示器。 5、支持多语言程序。只要程序遵循函数的调用约定,用不同编程语言编写的程序就可以调用相同的 DLL 函数。程序与 DLL 函数在下列方面必须是兼容的:函数期望其参数被推送到堆栈上的顺序,是函数还是应用程序负责清理堆栈,以及寄存器中是否传递了任何参数。 6、提供了扩展 MFC 库类的机制。可以从现有 MFC 类派生类,并将它们放到 MFC 扩展 DLL 中供 MFC 应用程序使用。 7、使国际版本的创建轻松完成。通过将资源放到 DLL 中,创建应用程序的国际版本变得容易得多。可将用于应用程序的每个语言版本的字符串放到单独的 DLL 资源文件中,并使不同的语言版本加载合适的资源。 使用DLL 的一个潜在缺点是应用程序不是独立的;它取决于是否存在单独的 DLL 模块。以上为转载
6记事本写的C#程序如何运行?
用计事本写的C#程序是一个文本文件,想要运行需要把这个文件编译成EXE可执行文件。编译的方式有两种:
1、安装Visual Studio,把文件加入项目中,编译运行。
2、使用net framework自带有C#编译器 csc.exe,手动编译,在命令行下,添加csc.exe路径到环境变量,然后执行csc file.cs即可编译把file.cs编译成exe文件。
附C#编译器csc.exe的常见用法:
编译 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
好了,关于如何使用CSC.EXE编译DLL和c编译成dll的分享到此就结束了,不知道大家通过这篇文章了解的如何了?如果你还想了解更多这方面的信息,没有问题,记得收藏关注本站。