-reference (параметры компилятора C#)-reference (C# Compiler Options)

Параметр -reference предписывает компилятору импортировать сведения типа public из указанного файла в текущий проект. Это позволяет ссылаться на метаданные из указанных файлов сборки.The -reference option causes the compiler to import public type information in the specified file into the current project, thus enabling you to reference metadata from the specified assembly files.

СинтаксисSyntax

-reference:[alias=]filename  
-reference:filename  

АргументыArguments

filename
Имя файла, содержащего манифест сборки.The name of a file that contains an assembly manifest. Чтобы импортировать данные из нескольких файлов, включите отдельный параметр -reference для каждого файла.To import more than one file, include a separate -reference option for each file.

alias
Допустимый идентификатор C#, который представляет корневое пространство имен, содержащее все пространства имен сборки.A valid C# identifier that will represent a root namespace that will contain all namespaces in the assembly.

RemarksRemarks

Чтобы импортировать данные из нескольких файлов, включите параметр -reference для каждого файла.To import from more than one file, include a -reference option for each file.

Импортируемые файлы должны содержать манифест; выходной файл следует компилировать с одним из параметров -target, отличных от -target:module.The files you import must contain a manifest; the output file must have been compiled with one of the -target options other than -target:module.

-r является краткой формой -reference.-r is the short form of -reference.

Для импорта метаданных из выходного файла, который не содержит манифест сборки, используется параметр -addmodule.Use -addmodule to import metadata from an output file that does not contain an assembly manifest.

При ссылке на сборку (сборку А), которая, в свою очередь, ссылается на другую сборку (сборку Б), необходимо ссылаться на сборку Б в указанных ниже случаях.If you reference an assembly (Assembly A) that references another assembly (Assembly B), you will need to reference Assembly B if:

  • Используемый в сборке A тип наследует от типа сборки Б или реализует интерфейс из этой сборки.A type you use from Assembly A inherits from a type or implements an interface from Assembly B.

  • Вызывается поле, свойство, событие или метод, которые имеют тип возвращаемых данных или тип параметра из сборки Б.You invoke a field, property, event, or method that has a return type or parameter type from Assembly B.

Для указания каталога, где находится одна или несколько ссылок на сборки, используется параметр -lib.Use -lib to specify the directory in which one or more of your assembly references is located. В разделе, посвященном параметру -lib, также рассматриваются каталоги, в которых компилятор ищет сборки.The -lib topic also discusses the directories in which the compiler searches for assemblies.

Чтобы компилятор мог распознавать тип в сборке (не в модуле), ему следует указать принудительно разрешать типы. Это можно сделать, определив экземпляр типа.In order for the compiler to recognize a type in an assembly, and not in a module, it needs to be forced to resolve the type, which you can do by defining an instance of the type. Возможны и другие способы разрешения компилятором имен типов в сборке. Например, если тип наследуется от типа в сборке, его имя будет распознаваться компилятором.There are other ways to resolve type names in an assembly for the compiler: for example, if you inherit from a type in an assembly, the type name will then be recognized by the compiler.

Иногда бывает необходимо сослаться на две различные версии одного компонента из одной сборки.Sometimes it is necessary to reference two different versions of the same component from within one assembly. Для этого следует использовать подпараметр псевдонима для параметра -reference для каждого файла, чтобы различать два этих файла.To do this, use the alias suboption on the -reference switch for each file to distinguish between the two files. Этот псевдоним используется в качестве квалификатора имени компонента и разрешается в компонент в одном из файлов.This alias will be used as a qualifier for the component name, and will resolve to the component in one of the files.

Файл ответов csc (RSP-файл), который ссылается на часто используемые сборки .NET Framework, используется по умолчанию.The csc response (.rsp) file, which references commonly used .NET Framework assemblies, is used by default. Параметр -noconfig позволяет запретить компилятору использовать файл csc.rsp.Use -noconfig if you do not want the compiler to use csc.rsp.

Примечание

В Visual Studio используйте диалоговое окно Добавление ссылки.In Visual Studio, use the Add Reference dialog box. Для получения дополнительной информации см. Практическое руководство. Добавление и удаление ссылок с помощью диспетчера ссылок.For more information, see How to: Add or Remove References By Using the Reference Manager. Чтобы обеспечить эквивалентное поведение при добавлении ссылок с помощью -reference и диалогового окна Добавление ссылки, свойству Внедрить типы взаимодействия добавляемой сборки должно быть задано значение False.To ensure equivalent behavior between adding references by using -reference and adding references by using the Add Reference dialog box, set the Embed Interop Types property to False for the assembly that you're adding. True является значением по умолчанию для этого свойства.True is the default value for the property.

ПримерExample

В этом примере показано, как использовать псевдоним extern.This example shows how to use the extern alias feature.

В примере компилируется файл исходного кода и импортируются метаданные из сборок grid.dll и grid20.dll, которые были скомпилированы ранее.You compile the source file and import metadata from grid.dll and grid20.dll, which have been compiled previously. Два DLL-файла содержат разные версии одного компонента, поэтому для компиляции файла исходного кода используются два параметра -reference с подпараметрами псевдонимов.The two DLLs contain separate versions of the same component, and you use two -reference with alias options to compile the source file. Параметры выглядят следующим образом:The options look like this:

-reference:GridV1=grid.dll -reference:GridV2=grid20.dll  

При этом устанавливаются внешние псевдонимы GridV1 и GridV2, которые используются посредством оператора extern.This sets up the external aliases GridV1 and GridV2, which you use in your program by means of an extern statement:

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

После выполнения описанных выше действий можно ссылаться на элемент управления "сетка" из файла grid.dll, предваряя имя элемента управления префиксом GridV1, как показано в следующем коде.Once this is done, you can refer to the grid control from grid.dll by prefixing the control name with GridV1, like this:

GridV1::Grid  

Кроме того, можно ссылаться на элемент управления "сетка" из файла grid20.dll, предваряя имя элемента управления префиксом GridV2, как показано в следующем коде.In addition, you can refer to the grid control from grid20.dll by prefixing the control name with GridV2 like this:

GridV2::Grid

См. также разделSee also