您所在的位置: 首页 > 读书频道 > 设计开发 > C++ >

2.10 有关编译C#文件的更多内容

http://book.51cto.com  2008-01-18 15:39  (美)Christian Nagel等著 李敏波 译 黄静 审校  清华大学出版社  我要评论(0)
  • 摘要:《C#高级编程(第4版)》以最新的.NET Framework 2.0和Visual Studio 2005为基础,全面介绍了C#编程的工具,提供了理解.NET体系结构的工作原理所必需的背景知识。第二章主要介绍的是C#编程的基础知识。本文主要说的是有关编译C#文件的更多内容。
  • 标签:MSDN  C#  DLL  C++  C#高级编程(第4版)

2.10  有关编译C#文件的更多内容

前面介绍了如何使用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的代码,为了简单起见,它只包含一个公共类Math和一个方法,该方法把两个int类型的数据加在一起:

namespace Wrox.ProCSharp.Basics
{
   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.ProCSharp.Basics
{
   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—— 加运算的结果。

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节
C++是垃圾语言?!
VC++基础开发专题
C#实用基础教程
C#技术开发指南
C++开发专栏
 
 验证码: (点击刷新验证码)   匿名发表
  • Linux C编程实战

  • 作者:童永清
  • 本书系统地介绍了在Linux平台下用C语言进行程序开发的过程,集趣味性、实战性于一体的160多段代码实例,帮助读者快速掌握在Linu..
Copyright©2005-2008 51CTO.COM 版权所有