Udostępnij za pośrednictwem


/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życiu initialAppDomain 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. /DELAYSIGNOpcje konsolidatora , /KEYCONTAINERi /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

  1. 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).

  2. Ustaw listę rozwijaną Konfiguracja na Wszystkie konfiguracje i ustaw listę rozwijaną Platforma na Wszystkie platformy.

  3. Wybierz stronę Właściwości>konfiguracji C/C++>General.

  4. 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 też

Opcje kompilatora MSVC
Składnia wiersza polecenia kompilatora MSVC