Директива #using будет импортировать метаданные в программу компилированную с /clr.
#using file [as_friend]
Параметры:
file - *.dll или *.exe, например:
#using <MyComponent.dll>
as_friend - указывает, что все типы в file доступны.
file может быть файл Microsoft intermediate language (MSIL) для управляемых данных и управляемых конструкций. Если DLL-файл содержащий манифест сборки, то импортированы все .dlls, на которые имеются ссылки в манифесте и сборка строит перечисленные файлы в метаданных в качестве ссылки на сборку.
Если file не содержит сборку (если file модуль) и если не планируется использовать информацию о типах из модуля в текущем приложении (сборки) можно просто указать, что модуль является частью сборки; используйте /ASSEMBLYMODULE.
Альтернативы для использования #using/FU параметр компилятора.
Сборки *.exe, передаваемые #using, компилируются с /clr:safe или /clr:pure или с любыми другими компиляторы Visual Studio (например Visual Basic или Visual c#). При попытке импортировать метаданные из сборки *.exe с /clr приведет к возникновению исключения при загрузке файла.
Компонент, который ссылается на #using можно выполнить с другой версией файла импортированного во время компиляции.
Чтобы компилятор мог распознавать тип в сборке (не в модуле), ему следует указать принудительно разрешение типа. Это можно сделать, например, определив экземпляр типа. Возможны и другие способы разрешения компилятором имен типов в сборке. Например, если тип наследуется от типа в сборке, его имя будет распознаваться компилятором.
Метаданные, созданные при импортировании из исходного кода, который использует __declspec (поток) семантика потока не упорствована в метаданных. Например, переменная, объявленная с __declspec (поток), компилируется в программе, строиться для среды CLR платформы .NET Framework, а затем импортируется с помощью #using.
Все импортированные типы (как управляемый, так и собственные) в файле, на который ссылается #using доступны, но компилятор рассматривает собственные типы в качестве определения объявлений.
mscorlib.dll автоматически ссылается при компилировании с /clr.
Переменная среды LIBPATH указывает каталоги, которые будут производиться, когда компилятор пытается разрешить имена файлов, передаваемые #using.
Компилятор будет выполнять поиск для ссылок на следующие пути:
1. Путь, указанный в #using выписка.
2. Текущий каталог.
3. Системный каталог платформы .NET Framework.
4. Каталоги, добавленные с /AI параметр компилятора.
5. Каталоги в переменной среды LIBPATH.
Пример:
При построении сборки (c) и (B ссылке на саму сборку), выдающую ссылку на другую сборку (a), необходимо явно ссылаться на сборку (a), если явно не будет использовать один из типов (c) в (a).
// using_assembly_A.cpp
// compile with: /clr /LD
public ref class A {};
// using_assembly_B.cpp
// compile with: /clr /LD
#using "using_assembly_A.dll"
public ref class B {
public:
void Test(A a) {}
void Test() {}
};