更新:2007 年 11 月
/reference 选项导致编译器将指定文件中的
/reference:[alias=]filename /reference:filename |
参数
备注
若要从多个文件导入,请为每个文件包括一个 /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# 编译器选项)。
有关更多信息,请参见
示例
此示例演示如何使用
编译源文件,并从先前已编译的 grid.dll 和 grid20.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 |