频道栏目
读书频道 > 软件开发 > C# > C#高级编程(第8版)
2.9 有关编译C#文件的更多内容
2013-10-25 15:19:05     我来说两句
收藏   我要投稿

本文所属图书 > C#高级编程(第8版)

《C 高级编程(第8版)》是C 2012和 NET 4 5高级技术的终极资源,旨在帮助读者更新、提高用C 2012和 NET 4 5编写Windows应用程序、Web应用程序、Windows 8样式应用程序的技巧。本书的顶级作者专家团队首先介  立即去当当网订购

前面介绍了如何使用csc.exe编译控制台应用程序,但其他类型的应用程序如何编译?如果要引用一个类库,该怎么办?MSDN文档详细介绍了C#编译器的所有编译选项,这里只介绍其中最重要的选项。

要回答第一个问题,应使用/target选项(常简写为/t)来指定要创建的文件类型。文件类型可以是表2-8所示的类型中的一种。
表2-8


选    项 输     出
/t:exe 控制台应用程序 (默认)
/t:library 带有清单的类库
/t:module 没有清单的组件
/t:winexe Windows应用程序 (没有控制台窗口)
 

如果想得到一个可由.NET运行库加载的非可执行文件(如DLL),就必须把它编译为一个库。如果把C#文件编译为一个模块,就不会创建任何程序集。虽然模块不能由运行库加载,但可以使用/addmodule选项编译到另一个清单中。

另一个需要注意的选项是/out,该选项可以指定由编译器生成的输出文件名。如果没有指定/out选项,编译器就会使用输入的C#文件名,加上目标类型的扩展名来确定输出文件名(如.exe表示Windows或控制台应用程序,.dll表示类库)。注意/out和/t(或/target)选项必须放在要编译的文件名前面。

默认状态下,如果在未引用的程序集中引用类型,可以将/reference或/r选项与程序集的路径和文件名一起使用。下面的例子说明了如何编译类库,并在另一个程序集中引用这个库。它包含两个文件:

类库

控制台应用程序,该应用程序调用库中的一个类

第一个文件MathLibrary.cs包含DLL的代码,为了简单起见,它只包含一个公共类MathLib和一个方法,该方法把两个int类型的数据加在一起:
namespace Wrox
{
public class MathLib
{
public int Add(int x, int y)
{
return x + y;
}
}
}

使用下述命令把这个C#文件编译为. NET DLL:
csc /t:library MathLibrary.cs

控制台应用程序MathClient.cs将简单地实例化这个对象,调用其Add()方法,在控制台窗口中显示结果:
using System;
namespace Wrox
{
class Client
{
public static void Main()
{
MathLib mathObj = new MathLib();
Console.WriteLine(mathObj.Add(7,8));
}
}
}

使用/r选项编译这个文件,使之指向新编译的DLL:
csc MathClient.cs /r:MathLibrary.dll

当然,下面就可以像往常一样运行它了:在命令提示符下输入MathClient,其结果是显示数字15—— 加运算的结果。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.8.2 给Main()方法传递参数
下一篇:2.10 控制台I/O
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站