/clr (Ortak dil çalışma zamanı derlemesi)/clr (Common Language Runtime Compilation)

Uygulamaların ve bileşenlerin ortak dil çalışma zamanı (CLR) özelliklerini kullanmasına ve C++/CLı derlemesini kullanmasına olanak sağlar.Enables applications and components to use features from the common language runtime (CLR) and enables C++/CLI compilation.

SyntaxSyntax

/clr[:Seçenekler ]/clr[:options ]

ArgumentsArguments

Seçenekleroptions
Aşağıdaki virgülle ayrılmış bağımsız değişkenlerden biri veya daha fazlası.One or more of the following comma-separated arguments.

  • yoknone

    Seçenek olmadan, /clr bileşen için meta veriler oluşturur.With no options, /clr creates metadata for the component. Meta veriler diğer CLR uygulamaları tarafından tüketilebilir ve bileşenin diğer CLR bileşenlerinin meta verilerindeki türleri ve verileri kullanmasına olanak sağlar.The metadata can be consumed by other CLR applications, and enables the component to consume types and data in the metadata of other CLR components. Daha fazla bilgi için bkz. karma (yerel ve yönetilen) derlemeler.For more information, see Mixed (Native and Managed) Assemblies.

  • NetCore

    /clr:NetCore .NET Core olarak da bilinen en son platformlar arası .NET Framework 'ü kullanarak bileşen için meta verileri ve kodu oluşturur./clr:NetCore creates metadata and code for the component using the latest cross-platform .NET framework, also known as .NET Core. Meta veriler diğer .NET Core uygulamaları tarafından tüketilebilir.The metadata can be consumed by other .NET Core applications. Ve seçeneği, bileşenin diğer .NET Core bileşenlerinin meta verilerinde türleri ve verileri kullanmasına olanak sağlar.And, the option enables the component to consume types and data in the metadata of other .NET Core components.

  • nostdlib

    Derleyiciye varsayılan dizini yok saymasını söyler \clr .Instructs the compiler to ignore the default \clr directory. System.dll gibi, DLL 'nin birden çok sürümünü dahil ederseniz derleyici hata üretir.The compiler produces errors if you include multiple versions of a DLL, such as System.dll. Bu seçenek, derleme sırasında kullanmak üzere belirli bir çerçeveyi belirtmenizi sağlar.This option lets you specify the specific framework to use during compilation.

  • pure

    /clr:pure kullanım dışıdır ./clr:pure is deprecated . Bu seçenek, Visual Studio 2017 ve üzeri sürümlerde kaldırılır.The option is removed in Visual Studio 2017 and later. C# ' ye saf MSIL olması gereken bağlantı noktası kodu kullanmanızı öneririz.We recommend that you port code that must be pure MSIL to C#.

  • safe

    /clr:safe kullanım dışıdır ./clr:safe is deprecated . Bu seçenek, Visual Studio 2017 ve üzeri sürümlerde kaldırılır.The option is removed in Visual Studio 2017 and later. C# ' ye güvenli MSIL olması gereken bağlantı noktası kodu kullanmanızı öneririz.We recommend that you port code that must be safe MSIL to C#.

  • noAssembly

    /clr:noAssembly kullanım dışıdır ./clr:noAssembly is deprecated . Bunun yerine /LN (MSIL Modülü Oluştur) kullanın.Use /LN (Create MSIL Module) instead.

    Derleyiciye çıkış dosyasına bir derleme bildirimi eklememasını söyler.Tells the compiler not to insert an assembly manifest into the output file. Varsayılan olarak noAssembly seçenek geçerli değildir.By default, the noAssembly option isn't in effect.

    Bildirimde derleme meta verileri olmayan yönetilen bir program Modül olarak bilinir.A managed program that doesn't have assembly metadata in the manifest is known as a module . noAssembly Seçeneği yalnızca bir modül oluşturmak için kullanılabilir.The noAssembly option can be used only to produce a module. Ve kullanarak derlerseniz /c /clr:noAssembly , /NOASSEMBLY bir modül oluşturmak için bağlayıcı aşamasında seçeneğini belirleyin.If you compile by using /c and /clr:noAssembly , then specify the /NOASSEMBLY option in the linker phase to create a module.

    Visual Studio 2005 öncesi, /clr:noAssembly gereklidir /LD .Before Visual Studio 2005, /clr:noAssembly required /LD . /LD , ' i belirttiğinizde, artık ima edilir /clr:noAssembly ./LD is now implied when you specify /clr:noAssembly .

  • initialAppDomain

    initialAppDomain artık kullanılmıyor .initialAppDomain is obsolete . Bir C++/CLı uygulamasının CLR sürüm 1 ' de çalışmasını sağlar.Enables a C++/CLI application to run on version 1 of the CLR. Kullanılarak derlenen bir uygulama initialAppDomain , clr 'nin 1. sürümünde desteklenmediğinden, ASP.NET kullanan bir uygulama tarafından kullanılmamalıdır.An application that's compiled by using initialAppDomain shouldn't be used by an application that uses ASP.NET because it's not supported in version 1 of the CLR.

AçıklamalarRemarks

Yönetilen kod , CLR tarafından incelenelebilecek ve yönetilebilen koddur.Managed code is code that can be inspected and managed by the CLR. Yönetilen kod, yönetilen nesnelere erişebilir.Managed code can access managed objects. Daha fazla bilgi için bkz. /clr kısıtlamalar.For more information, see /clr Restrictions.

C++ ' da yönetilen türleri tanımlayan ve tüketen uygulamalar geliştirme hakkında bilgi için bkz. çalışma zamanı platformları Için bileşen uzantıları.For information about how to develop applications that define and consume managed types in C++, see Component Extensions for Runtime Platforms.

Kullanılarak derlenen bir uygulama /clr yönetilen verileri içermeyebilir veya içermeyebilir.An application compiled by using /clr may or may not contain managed data.

Yönetilen bir uygulamada hata ayıklamayı etkinleştirmek için, bkz. (hata ayıklama /ASSEMBLYDEBUG Ggableattribute ekleme).To enable debugging on a managed application, see /ASSEMBLYDEBUG (Add DebuggableAttribute).

Atık toplanan yığında yalnızca CLR türleri oluşturulur.Only CLR types are instantiated on the garbage-collected heap. Daha fazla bilgi için bkz. sınıflar ve yapılar.For more information, see Classes and Structs. Yerel koda bir işlev derlemek için unmanaged pragma kullanın.To compile a function to native code, use the unmanaged pragma. Daha fazla bilgi için bkz. managed , unmanaged .For more information, see managed, unmanaged.

Varsayılan olarak /clr etkin değildir.By default, /clr isn't in effect. /clr Etkin olduğunda /MD da etkin olur.When /clr is in effect, /MD is also in effect. Daha fazla bilgi için bkz., /MD /MT /LD (Run-Time kitaplığı kullanın).For more information, see /MD, /MT, /LD (Use Run-Time Library). /MD çalışma zamanı yordamlarının dinamik olarak bağlı, çok iş parçacıklı sürümlerinin standart üstbilgi dosyalarından seçili olmasını sağlar./MD ensures that the dynamically linked, multithreaded versions of the runtime routines are selected from the standard header files. CLR atık toplayıcısı bir yardımcı iş parçacığında sonlandırıcılar çalıştırdığından yönetilen programlama için çoklu iş parçacığı gereklidir.Multithreading is required for managed programming because the CLR garbage collector runs finalizers in an auxiliary thread.

Kullanarak derlerseniz /c , bağlayıcı seçeneğini kullanarak elde edilen çıkış dosyasının clr türünü belirtebilirsiniz /CLRIMAGETYPE .If you compile by using /c , you can specify the CLR type of the resulting output file by using the /CLRIMAGETYPE linker option.

/clr****/EHa , /EH için diğer seçeneklerin destekleneceği anlamına gelir /clr ./clr implies /EHa , and no other /EH options are supported for /clr . Daha fazla bilgi için bkz. /EH (özel durum işleme modeli).For more information, see /EH (Exception Handling Model).

Bir dosyanın CLR görüntü türünü belirleme hakkında daha fazla bilgi için bkz /CLRHEADER ..For information about how to determine the CLR image type of a file, see /CLRHEADER.

Belirli bir bağlayıcı çağrısına geçirilen tüm modüller aynı çalışma zamanı kitaplığı derleyici seçeneği (veya) kullanılarak derlenmelidir /MD /LD .All modules passed to a given invocation of the linker must be compiled by using the same run-time library compiler option ( /MD or /LD ).

/ASSEMBLYRESOURCEBir derlemeye kaynak eklemek için bağlayıcı seçeneğini kullanın.Use the /ASSEMBLYRESOURCE linker option to embed a resource in an assembly. /DELAYSIGN, /KEYCONTAINER , ve /KEYFILE bağlayıcı seçenekleri de bir derlemenin oluşturulma şeklini özelleştirmenizi sağlar./DELAYSIGN, /KEYCONTAINER, and /KEYFILE linker options also let you customize how an assembly is created.

/clr Kullanıldığında, _MANAGED simge 1 olacak şekilde tanımlanır.When /clr is used, the _MANAGED symbol is defined to be 1. Daha fazla bilgi için bkz. önceden tanımlanmış makrolar.For more information, see Predefined macros.

Yerel bir nesne dosyasındaki genel değişkenler ilk olarak başlatılır ( DllMain yürütülebilir dosya dll ise sırasında) ve ardından yönetilen bölümdeki genel değişkenler başlatılır (herhangi bir yönetilen kod çalıştırılmadan önce).The global variables in a native object file are initialized first (during DllMain if the executable is a DLL), and then the global variables in the managed section are initialized (before any managed code is run). #pragma init_seg yalnızca yönetilen ve yönetilmeyen kategorilerde başlatma sırasını etkiler.#pragma init_seg only affects the order of initialization in the managed and unmanaged categories.

Meta veri ve adlandırılmamış sınıflarMetadata and Unnamed Classes

Adlandırılmamış sınıflar $UnnamedClass$<crc-of-current-file-name>$<index>$ , örneğin, <index> derlemede adlandırılmamış sınıfların sıralı bir sayısı olan gibi adlarda meta verilerde görünür.Unnamed classes appear in metadata under names such as $UnnamedClass$<crc-of-current-file-name>$<index>$, where <index> is a sequential count of the unnamed classes in the compilation. Örneğin, aşağıdaki kod örneği meta verilerde adlandırılmamış bir sınıf oluşturur.For example, the following code sample generates an unnamed class in metadata.

// clr_unnamed_class.cpp
// compile by using: /clr /LD
class {} x;

Meta verileri görüntülemek için ildasm.exe kullanın.Use ildasm.exe to view metadata.

Bu derleyici seçeneğini Visual Studio geliştirme ortamında ayarlamak içinTo set this compiler option in the Visual Studio development environment

  1. Projenin Özellik sayfaları iletişim kutusunu açın.Open the project's Property Pages dialog box. Ayrıntılar için bkz. Visual Studio 'Da C++ derleyicisini ve derleme özelliklerini ayarlama.For details, see Set C++ compiler and build properties in Visual Studio.

  2. Yapılandırma açılan listesini tüm yapılandırmalar olarak ayarlayın ve Platform açılan listesini tüm platformlar olarak ayarlayın.Set the Configuration dropdown to All configurations , and set the Platform dropdown to All Platforms .

  3. Yapılandırma özellikleri > C/C++ > genel sayfasını seçin.Select the Configuration Properties > C/C++ > General page.

  4. Ortak dil çalışma zamanı desteği özelliğini değiştirin.Modify the Common Language Runtime Support property. Değişikliklerinizi kaydetmek için Tamam ' ı seçin.Choose OK to save your changes.

Not

Visual Studio IDE 'de, /clr derleyici seçeneği Özellik sayfaları iletişim kutusunun yapılandırma özellikleri > C/C++ > genel sayfasında tek tek ayarlanabilir.In the Visual Studio IDE, the /clr compiler option can be individually set on the Configuration Properties > C/C++ > General page of the Property Pages dialog. Ancak, projenizi oluşturmak için bir CLR şablonu kullanmanızı öneririz.However, we recommend you use a CLR template to create your project. CLR bileşeninin başarıyla oluşturulması için gereken tüm özellikleri ayarlar.It sets all of the properties required for successful creation of a CLR component. Bu özellikleri ayarlamaya yönelik başka bir yol da Özellik sayfaları iletişim kutusunun yapılandırma özellikleri Gelişmiş sayfasında ortak dil çalışma zamanı desteği özelliğini kullanmaktır > Advanced .Another way to set these properties is to use the Common Language Runtime Support property on the Configuration Properties > Advanced page of the Property Pages dialog. Bu özellik, CLR ile ilgili diğer araç seçeneklerini aynı anda ayarlar.This property sets all the other CLR-related tool options at once.

Bu derleyici seçeneğini program üzerinden ayarlamak içinTo set this compiler option programmatically

Ayrıca bkz.See also

MSVC derleyici seçenekleriMSVC Compiler Options
MSVC derleyici Command-Line sözdizimiMSVC Compiler Command-Line Syntax