编译的时候加上 /reference 指令http://msdn.microsoft.com/zh-cn/library/ms379563(v=vs.80).aspx#EKAA使用 /reference 引用外部程序集
此时,我们已经使用命令行编译器创建了具有强名称(并且进行了说明)的单文件代码库。现在,我们需要一个客户端应用程序以便使用它。请在 C:\MyCSharpCode 中创建一个名为 MyClient 的新文件夹。在该文件夹中,创建一个新的 C# 代码文件 (simpleTypeClient.cs),该文件从程序的入口点调用静态的 SimpleType.DisplayEnvironment() 方法:
// simpleTypeClient.cs
using System;// Namespace in MyCodeLibrary.dll
using MyCodeLibrary;  namespace MyClientApp
{
  public class MyApp
  {
    public static void Main()
    {
      SimpleType.DisplayEnvironment();
      Console.ReadLine();
    }
  }
}
因为我们的客户端应用程序要使用 MyCodeLibrary.dll,所以我们需要使用 /reference(或只是使用 /r)选项。该标志很灵活,因为您可以指定所讨论的 *dll 的完整路径,如下所示:
csc /t:exe /r:C:\MyCSharpCode\MyCodeLibrary\MyCodeLibrary.dll *.cs
或者,如果私有程序集的副本与输入文件位于相同的文件夹中,则可以只指定程序集名称:
csc /t:exe /r:MyCodeLibrary.dll *.cs
请注意,我没有指定 /out 选项。给定该条件,csc.exe 基于我们的初始输入文件 (simpleTypeClient.cs) 创建了一个名称。此外,已知 /target 的默认行为是生成基于控制台的应用程序,所以 /t:exe 参数是可选的。
在任何情况下,因为 MyCodeLibrary.dll 是私有程序集,所以您需要将该库的一个副本放到 MyClient 目录中。在您完成该工作以后,您就能够执行 simpleTypeClient.exe 应用程序。图 7 显示了可能的测试运行。图 7. 可能的测试运行输出
注 请回忆一下这个问题,不必将具有强名称的程序集部署到全局程序集缓存 (GAC) 中。实际上,因为强名称具有天然的安全性方面的好处,所以向每个程序集(无论共享与否)提供强名称是一种 .NET 最佳策略。
引用多个外部程序集
如果您希望在命令行引用大量程序集,则可以指定多个 /reference 选项。为了说明这一点,假设我们的客户端应用程序需要使用包含在名为 NewLib.dll 的库中的类型:
csc /t:exe /r:MyCodeLibrary.dll /r:NewLib.dll *.cs
作为一种稍微简单一些的替代方法,您可以使用单个 /reference 选项,并且使用分号分隔的列表指定每个程序集:
csc /t:exe /r:MyCodeLibrary.dl;NewLib.dll *.cs
当然,在创作 C# 响应文件时使用相同的语法。
关于 /lib 的简短说明
在查看 C# 2.0 程序集别名的作用之前,请允许我对 /lib 标志加以简短说明。该选项可用于将包含由 /reference 选项指定的程序集的目录告诉给 csc.exe。为了进行说明,假设您具有三个位于驱动器 C 的根目录中的 *.dll 程序集。要指示 csc.exe 在 C:\ 下查找 asm1.dll、asm2.dll 和 asm3.dll,需要发出以下命令集:
csc /lib:c:\ /reference:asm1.dll;asm2.dll;asm3.dll *.cs 
如果您未使用 /lib,则需要将这三个 .NET 代码库手动复制到包含输入文件的目录中。还请注意,如果在给定的命令集中多次发出 /lib 标志,则结果将累积起来。

解决方案 »

  1.   


    像我们这种非专业程序员,VS太大了,比较麻烦!理由比较牵强。命令行的用处在于,执行自动化的持续构建。说实话,你有些炫技的嫌疑,业余开发根本没必要用什么editplus,vs是最好用的。
      

  2.   

    editplus开发C# ?还真没听过
      

  3.   


    像我们这种非专业程序员,VS太大了,比较麻烦!理由比较牵强。命令行的用处在于,执行自动化的持续构建。说实话,你有些炫技的嫌疑,业余开发根本没必要用什么editplus,vs是最好用的。绝对不是炫技,我不崇尚技术!