/reference(C# 编译器选项)
/reference 选项导致编译器将指定文件中的 公开 类型信息导入到当前项目中,从而使您可以从指定的程序集文件引用元数据。
/reference:[alias=]filename
/reference:filename
实参
filename
包含程序集清单的文件的名称。 若要导入多个文件,请为每个文件包括一个单独的 /reference 选项。alias
一个有效的 C# 标识符,表示将包含程序集中所有命名空间的根命名空间。
备注
若要从多个文件导入,请为每个文件包括一个 /reference 选项。
导入的文件必须包含一个清单;输出文件必须已使用 /目标:模块 以外的 /目标 选项之一编译过。
/r 是 /reference 的缩写形式。
使用 /addmodule 从不包含程序集清单的输出文件导入元数据。
如果您引用了一个程序集(程序集 A),其本身又引用了另一个程序集(程序集 B),则在下列情况下需要引用程序集 B:
使用来自程序集 A 的类型继承自程序集 B 中的类型或实现程序集 B 中的接口。
调用具有程序集 B 中的返回类型或参数类型的字段、属性、事件或方法。
使用 /lib 指定一个或多个程序集引用所在的目录。 /lib 主题还讨论了编译器在哪些目录中搜索程序集。
为使编译器可以识别程序集(而不是模块)中的某个类型,需要强制解析此类型,这可以通过定义此类型的实例来完成。 还有其他方法可为编译器解析程序集中的类型名称:例如,如果您从程序集中的类型继承,编译器就能识别类型名称。
有时必须从一个程序集内部引用同一组件的两个不同版本。 为此,请在每个文件的 /reference 开关上使用 alias 子选项,以区分两个文件。 此别名将用作组件名称的限定符,并解析为其中一个文件中的组件。
默认情况下使用 csc 响应 (.rsp) 文件,该文件引用常用的 .NET Framework 程序集。 如果希望编译器不要使用 csc.rsp,请使用 /noconfig。
提示
在 Visual Studio 中,请使用“添加引用”对话框。 有关更多信息,请参见如何:在 Visual Studio 中添加或移除引用。 在 Visual Studio 2010 和更高版本中,若要确保通过使用 /reference 添加引用与通过使用“添加引用”对话框添加引用之间的行为等效,必须将您要添加的程序集的“嵌入互操作类型”属性设置为“False”。 “True”为该属性的默认值。
示例
本示例演示如何使用外部别名功能。
编译源文件,并从先前已编译的 grid.dll 和 grid20.dll 中导入元数据。 这两个 DLL 包含同一组件的不同版本,您将使用两个带有别名选项的 /reference 编译源文件。 这两个选项如下所示:
/reference:GridV1=grid.dll 和 /reference:GridV2=grid20.dll
这将设置外部别名“GridV1”和“GridV2”,您将在程序中通过外部语句使用它们:
extern alias GridV1;
extern alias GridV2;
// Using statements go here.
完成此操作后,您可以通过在控件名称前添加 GridV1 前缀来引用 grid.dll 中的网格控件,如下所示:
GridV1::Grid
此外,您可以通过在控件名称前添加 GridV2 前缀来引用 grid20.dll 中的网格控件,如下所示:
GridV2::Grid