/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, thenoAssembly
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.ThenoAssembly
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 uygulamainitialAppDomain
, 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 usinginitialAppDomain
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
).
/ASSEMBLYRESOURCE
Bir 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
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.
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 .
Yapılandırma özellikleri > C/C++ > genel sayfasını seçin.Select the Configuration Properties > C/C++ > General page.
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
- Bkz. CompileAsManaged.See CompileAsManaged.
Ayrıca bkz.See also
MSVC derleyici seçenekleriMSVC Compiler Options
MSVC derleyici Command-Line sözdizimiMSVC Compiler Command-Line Syntax