/reference(导入元数据)(C# 编译器选项)

/reference 选项导致编译器将指定文件中的 public(C# 参考)类型信息导入到当前项目中,从而使您可以从指定的程序集文件引用元数据。

/reference:[alias=]filename
/reference:filename

参数

  • filename
    包含程序集清单的文件的名称。若要导入多个文件,请为每个文件包括一个单独的 /reference 选项。
  • alias
    一个有效的 C# 标识符,表示将包含程序集中所有命名空间的根命名空间。

备注

若要从多个文件导入,请为每个文件包括一个 /reference 选项。

导入的文件必须包含一个清单;输出文件必须已使用 /target:module(创建模块以添加到程序集)(C# 编译器选项)以外的 /target(指定输出文件格式)(C# 编译器选项)选项之一编译过。

/r/reference 的缩写形式。

使用 /addmodule(导入元数据)(C# 编译器选项)从不包含程序集清单的输出文件导入元数据。

如果您引用了一个程序集(程序集 A),其本身又引用了另一个程序集(程序集 B),则在下列情况下需要引用程序集 B:

  • 使用来自程序集 A 的类型继承自程序集 B 中的类型或实现程序集 B 中的接口。

  • 调用具有程序集 B 中的返回类型或参数类型的字段、属性、事件或方法。

使用 /lib(指定程序集引用位置)(C# 编译器选项)指定一个或多个程序集引用所在的目录。/lib 主题还讨论了编译器在哪些目录中搜索程序集。

为使编译器可以识别程序集(而不是模块)中的某个类型,需要强制解析此类型,这可以通过定义此类型的实例来完成。还有其他方法可为编译器解析程序集中的类型名称:例如,如果您从程序集中的类型继承,编译器就能识别类型名称。

有时必须从一个程序集内部引用同一组件的两个不同版本。为此,请在每个文件的 /reference 开关上使用 alias 子选项,以区分两个文件。此别名将用作组件名称的限定符,并解析为其中一个文件中的组件。

默认情况下使用 csc 响应 (.rsp) 文件,该文件引用常用的 .NET Framework 程序集。如果不希望编译器使用 csc.rsp,请使用 /noconfig(忽略 csc.rsp)(C# 编译器选项)

有关更多信息,请参见“添加引用”对话框

示例

此示例演示如何使用外部别名(C# 参考)功能。

编译源文件,并从先前已编译的 grid.dllgrid20.dll 中导入元数据。 这两个 DLL 包含同一组件的不同版本,您将使用两个带有别名选项的 /reference 编译源文件。这两个选项如下所示:

/reference:GridV1=grid.dll 和 /reference:GridV2=grid20.dll

这将设置外部别名“GridV1”和“GridV2”,您将在程序中通过外部语句使用它们:

extern GridV1;
extern GridV2;
// Using statements go here.

完成此操作后,您可以通过在控件名称前添加 GridV1 前缀来引用 grid.dll 中的网格控件,如下所示:

GridV1::Grid

此外,您可以通过在控件名称前添加 GridV2 前缀来引用 grid20.dll 中的网格控件,如下所示:

GridV2::Grid 

请参见

其他资源

C# 编译器选项