使用 -reference 选项,编译器会将指定文件中的公共类型信息导入当前项目,从而使您可以引用指定程序集中的元数据。
-reference:[alias=]filename
-reference:filename
filename | 包含程序集清单的文件名。若要导入多个文件,请为每个文件包含一个单独的 -reference 选项。 |
alias | 一个有效的 X# 标识符,代表一个根命名空间,该命名空间将包含程序集中的所有命名空间。 |
要从多个文件导入,请为每个文件添加一个 -reference 选项。
导入的文件必须包含清单;输出文件必须是用 -target:module 以外的 -target 选项编译的。
-r 是 -reference 的简写。
使用 -addmodule 可从不包含程序集清单的输出文件中导入元数据。
如果你引用了一个程序集(程序集 A),而该程序集又引用了另一个程序集(程序集 B),那么在下列情况下,你需要引用程序集 B:
•您从程序集 A 使用的类型继承自程序集 B 的类型或实现了程序集 B 的接口。
•您调用的字段、属性、事件或方法具有来自程序集 B 的返回类型或参数类型。
使用 -lib 可指定一个或多个程序集引用所在的目录。-lib 主题还讨论了编译器搜索程序集的目录。
为了让编译器识别程序集(而非模块)中的类型,需要强制编译器解析该类型,这可以通过定义该类型的实例来实现。编译器还有其他方法来解析程序集中的类型名:例如,如果从程序集中的类型继承,编译器就能识别该类型名。
有时需要在一个程序集中引用同一组件的两个不同版本。为此,在每个文件的 -reference 开关中使用别名子选项来区分两个文件。该别名将用作组件名称的限定符,并解析为其中一个文件中的组件。
默认使用 xsc 响应 (.rsp) 文件,该文件引用常用的 .NET Framework 程序集。如果不想让编译器使用 xsc.rsp,请使用 -noconfig。
在 Visual Studio 中,使用 "添加引用 "对话框。
本例演示了如何使用外部别名功能。
你编译源文件,并从之前编译过的 grid.dll 和 grid20.dll 中导入元数据。这两个 DLL 包含同一组件的不同版本,你使用两个 -reference with alias 选项来编译源文件。选项如下
-reference:GridV1=grid.dll 和 -reference:GridV2=grid20.dll
这将设置外部别名 "GridV1 "和 "GridV2",并通过外部语句在程序中使用:
extern alias GridV1;
extern alias GridV2;
-/ Using statements go here.
完成上述操作后,就可以像下面这样,在 grid.dll 中引用 grid 控件,方法是在控件名称前加上 GridV1:
GridV1::Grid
此外,在引用 grid20.dll 中的 grid 控件时,可以在控件名称前加上 GridV2 这样的前缀:
GridV2::Grid