/clr
(Kompilacja środowiska uruchomieniowego języka wspólnego)
Umożliwia aplikacjom i składnikom używanie funkcji ze środowiska uruchomieniowego języka wspólnego (CLR) i umożliwia kompilację języka C++/CLI.
Składnia
/clr
[:
opcje]
Argumenty
Opcje
Co najmniej jeden z następujących argumentów rozdzielonych przecinkami.
Brak
Bez opcji
/clr
tworzy metadane dla składnika. Metadane mogą być używane przez inne aplikacje CLR i umożliwiają składnikowi używanie typów i danych w metadanych innych składników CLR. Aby uzyskać więcej informacji, zobacz Zestawy mieszane (natywne i zarządzane).
netcore
Dostępne począwszy od programu Visual Studio 2019 w wersji 16.4,
/clr:netcore
tworzy metadane i kod dla składnika przy użyciu najnowszej międzyplatformowej platformy .NET Framework, znanej również jako .NET Core. Metadane mogą być używane przez inne aplikacje platformy .NET Core. Ponadto opcja umożliwia składnikowi używanie typów i danych w metadanych innych składników platformy .NET Core.
nostdlib
Nakazuje kompilatorowi zignorowanie katalogu domyślnego
\clr
. Kompilator generuje błędy, jeśli uwzględnisz wiele wersji biblioteki DLL, takich jak System.dll. Ta opcja umożliwia określenie konkretnej platformy do użycia podczas kompilacji.pure
/clr:pure
jest przestarzały. Opcja zostanie usunięta w programie Visual Studio 2017 lub nowszym. Zalecamy, aby kod portu, który musi być czysty MSIL w języku C#.safe
/clr:safe
jest przestarzały. Opcja zostanie usunięta w programie Visual Studio 2017 lub nowszym. Zalecamy, aby kod portu, który musi być bezpieczny MSIL w języku C#.noAssembly
/clr:noAssembly
jest przestarzały. Zamiast tego użyj/LN
(utwórz moduł MSIL).Informuje kompilator, że nie wstawia manifestu zestawu do pliku wyjściowego. Domyślnie
noAssembly
opcja nie działa.Zarządzany program, który nie ma metadanych zestawu w manifeście, jest nazywany modułem. Tej
noAssembly
opcji można użyć tylko do utworzenia modułu. Jeśli kompilujesz przy użyciu metod/c
i/clr:noAssembly
, określ/NOASSEMBLY
opcję w fazie konsolidatora, aby utworzyć moduł.Przed programem Visual Studio 2005
/clr:noAssembly
wymagany jest program/LD
./LD
jest teraz implikowane podczas określania wartości/clr:noAssembly
.initialAppDomain
initialAppDomain
jest przestarzały. Umożliwia uruchamianie aplikacji C++/CLI w wersji 1 środowiska CLR. Aplikacja skompilowana przy użyciuinitialAppDomain
nie powinna być używana przez aplikację korzystającą z ASP.NET, ponieważ nie jest obsługiwana w wersji 1 środowiska CLR.
Uwagi
Kod zarządzany to kod , który można sprawdzić i zarządzać przez clR. Kod zarządzany może uzyskiwać dostęp do obiektów zarządzanych. Aby uzyskać więcej informacji, zobacz /clr
Ograniczenia.
Aby uzyskać informacje o sposobie tworzenia aplikacji definiujących i korzystających z typów zarządzanych w języku C++, zobacz Rozszerzenia składników dla platform środowiska uruchomieniowego.
Aplikacja skompilowana przy użyciu programu /clr
może lub nie może zawierać zarządzanych danych.
Aby włączyć debugowanie w aplikacji zarządzanej, zobacz /ASSEMBLYDEBUG
(Add DebuggableAttribute).
Tylko typy CLR są tworzone na stercie zbieranym przez śmieci. Aby uzyskać więcej informacji, zobacz Klasy i struktury. Aby skompilować funkcję w kodzie natywnym, użyj unmanaged
pragma. Aby uzyskać więcej informacji, zobacz managed
, unmanaged
.
Domyślnie /clr
nie działa. Gdy /clr
jest w mocy, /MD
jest również w mocy. Aby uzyskać więcej informacji, zobacz /MD
, /LD
/MT
( Użyj biblioteki czasu wykonywania). /MD
zapewnia, że dynamiczne połączone, wielowątkowane wersje procedur środowiska uruchomieniowego są wybierane ze standardowych plików nagłówków. W przypadku programowania zarządzanego wymagane jest wielowątkowanie, ponieważ moduł zbierający pamięci CLR uruchamia finalizatory w wątku pomocniczym.
Jeśli kompilujesz przy użyciu polecenia /c
, możesz określić typ CLR wynikowego pliku wyjściowego przy użyciu opcji konsolidatora /CLRIMAGETYPE
.
/clr
oznacza /EHa
, i żadne inne /EH
opcje nie są obsługiwane dla programu /clr
. Aby uzyskać więcej informacji, zobacz /EH
(Model obsługi wyjątków).
Aby uzyskać informacje na temat określania typu obrazu CLR pliku, zobacz /CLRHEADER
.
Wszystkie moduły przekazane do danego wywołania konsolidatora muszą być kompilowane przy użyciu tej samej opcji kompilatora biblioteki uruchomieniowej (/MD
lub /LD
).
Użyj opcji konsolidatora /ASSEMBLYRESOURCE
, aby osadzić zasób w zestawie. /DELAYSIGN
Opcje konsolidatora , /KEYCONTAINER
i /KEYFILE
umożliwiają również dostosowanie sposobu tworzenia zestawu.
Gdy /clr
jest używany, _MANAGED
symbol jest zdefiniowany jako 1. Aby uzyskać więcej informacji, zobacz Wstępnie zdefiniowane makra.
Zmienne globalne w pliku obiektu natywnego są inicjowane jako pierwsze (jeśli DllMain
plik wykonywalny jest biblioteką DLL), a następnie zmienne globalne w sekcji zarządzanej są inicjowane (przed uruchomieniem jakiegokolwiek kodu zarządzanego). #pragma init_seg
Wpływa tylko na kolejność inicjowania w zarządzanych i niezarządzanych kategoriach.
Klasy metadanych i nienazwanych
Klasy bez nazw są wyświetlane w metadanych pod nazwami, takimi jak $UnnamedClass$<crc-of-current-file-name>$<index>$
, gdzie <index>
jest sekwencyjną liczbą nienazwanych klas w kompilacji. Na przykład poniższy przykładowy kod generuje nienazwaną klasę w metadanych.
// clr_unnamed_class.cpp
// compile by using: /clr /LD
class {} x;
Użyj ildasm.exe, aby wyświetlić metadane.
Aby ustawić tę opcję kompilatora w środowisku programowania Visual Studio
Otwórz okno dialogowe Strony właściwości projektu. Aby uzyskać szczegółowe informacje, zobacz Set C++ compiler and build properties in Visual Studio (Ustawianie właściwości kompilatora języka C++ i kompilowania w programie Visual Studio).
Ustaw listę rozwijaną Konfiguracja na Wszystkie konfiguracje i ustaw listę rozwijaną Platforma na Wszystkie platformy.
Wybierz stronę Właściwości>konfiguracji C/C++>General.
Zmodyfikuj właściwość Obsługa środowiska uruchomieniowego języka wspólnego. Wybierz przycisk OK , aby zapisać zmiany.
Uwaga
W środowisku IDE /clr
programu Visual Studio opcję kompilatora można ustawić indywidualnie na stronie Właściwości>konfiguracji C/C++>Ogólne okna dialogowego Strony właściwości. Zalecamy jednak użycie szablonu CLR do utworzenia projektu. Ustawia wszystkie właściwości wymagane do pomyślnego utworzenia składnika CLR. Innym sposobem ustawienia tych właściwości jest użycie właściwości Obsługi środowiska uruchomieniowego języka wspólnego na stronie Właściwości> konfiguracji okna dialogowego Strony właściwości. Ta właściwość ustawia wszystkie inne opcje narzędzi związane z CLR jednocześnie.
Aby programowo ustawić tę opcję kompilatora
- Zobacz: CompileAsManaged.
Zobacz też
Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC