다음을 통해 공유


VCCLCompilerTool 인터페이스

VCCLCompilerTool 개체는 C++ 컴파일러 옵션의 기능을 노출합니다. 컴파일러 옵션에 대한 자세한 내용은 컴파일러 옵션을 참조하십시오.

네임스페이스:  Microsoft.VisualStudio.VCProjectEngine
어셈블리:  Microsoft.VisualStudio.VCProjectEngine(Microsoft.VisualStudio.VCProjectEngine.dll)

구문

‘선언
<GuidAttribute("3D6193F2-8B5D-4B0A-967F-7D163D918848")> _
Public Interface VCCLCompilerTool
[GuidAttribute("3D6193F2-8B5D-4B0A-967F-7D163D918848")]
public interface VCCLCompilerTool
[GuidAttribute(L"3D6193F2-8B5D-4B0A-967F-7D163D918848")]
public interface class VCCLCompilerTool
[<GuidAttribute("3D6193F2-8B5D-4B0A-967F-7D163D918848")>]
type VCCLCompilerTool =  interface end
public interface VCCLCompilerTool

VCCLCompilerTool 형식에서는 다음과 같은 멤버를 노출합니다.

속성

  이름 설명
Public 속성 AdditionalIncludeDirectories 포함 경로에 추가할 하나 이상의 디렉터리를 가져오거나 설정합니다.AdditionalIncludeDirectories에서 컴파일러의 /I(추가 포함 디렉터리) 옵션, MIDL 컴파일러의 MIDL 속성 페이지: 일반 옵션 및 리소스 컴파일러의 리소스 속성 페이지 옵션에 대한 기능을 노출합니다.
Public 속성 AdditionalOptions 명령줄의 끝, 파일 이름 바로 앞에 추가할 옵션을 가져오거나 설정합니다.예를 들어 개체 모델에서 옵션이 지원되지 않는 경우가 여기에 해당합니다.
Public 속성 AdditionalUsingDirectories #using 지시문 (C++) 지시문에 전달된 파일 참조를 확인하기 위해 검색할 디렉터리를 가져오거나 설정합니다.AdditionalUsingDirectories은 컴파일러의 /AI(메타데이터 디렉터리 지정) 옵션 기능을 노출합니다.
Public 속성 AssemblerListingLocation ASM 목록 파일의 상대 경로 및/또는 이름을 가져오거나 설정합니다.AssemblerListingLocation은 컴파일러의 /Fa 옵션 기능을 노출합니다.
Public 속성 AssemblerOutput 어셈블리 언어 출력 파일의 내용을 가져오거나 설정합니다.AssemblerOutput은 컴파일러의 /FA, /Fa(목록 파일) 옵션 기능을 노출합니다.
Public 속성 BasicRuntimeChecks 전체 런타임 오류 검사/RTC(런타임 오류 검사)), 런타임에 스택 프레임 유효성 검사(/RTC(런타임 오류 검사)) 및 런타임에 초기화되지 않은 변수 검사(/RTC(런타임 오류 검사))를 수행할지 여부를 나타내는 값을 가져오거나 설정합니다.
Public 속성 BrowseInformation 수준을 지정 정보 찾아보기 .bsc 파일에서.BrowseInformation은 컴파일러의 /FR, /Fr(.Sbr 파일 만들기) 옵션 기능을 노출합니다.
Public 속성 BrowseInformationFile 브라우저 정보 파일의 선택적 이름을 가져오거나 설정합니다.BrowseInformationFile은 컴파일러의 /FR, /Fr(.Sbr 파일 만들기) 옵션 기능을 노출합니다.
Public 속성 BufferSecurityCheck 버퍼 오버런을 검사할지 여부를 나타내는 값을 가져오거나 설정합니다.BufferSecurityCheck은 컴파일러의 /GS(버퍼 보안 검사) 옵션 기능을 노출합니다.
Public 속성 CallingConvention 응용 프로그램에 대한 기본 호출 규칙을 가져오거나 설정합니다.CallingConvention은 컴파일러의 /Gd, /Gr, /Gv, /Gz(호출 규칙) 옵션 기능을 노출합니다.
Public 속성 CompileAs .c 및 .cpp 파일에 대한 컴파일 언어 옵션을 선택합니다.CompileAs는 컴파일러의 /Tc, /Tp, /TC, /TP(소스 파일 형식 지정) 옵션 기능을 노출합니다.
Public 속성 CompileAsManaged 컴파일러 옵션을 나타내는 값을 가져오거나 설정합니다.
Public 속성 CompileOnly 연결하지 않고 컴파일할지 여부를 나타내는 값을 가져오거나 설정합니다.
Public 속성 DebugInformationFormat 컴파일러에서 생성하는 디버깅 정보의 형식을 가져오거나 설정합니다.DebugInformationFormat은 컴파일러의 /Z7, /Zi, /ZI(디버깅 정보 형식) 옵션 기능을 노출합니다.
Public 속성 DefaultCharIsUnsigned 기본 문자 형식을 가져오거나 unsigned로 설정합니다.DefaultCharIsUnsigned은 컴파일러의 /J(부호 없는 기본 문자 형식) 옵션 기능을 노출합니다.
Public 속성 Detect64BitPortabilityProblems 컴파일러에서 64비트 이식성 문제를 확인할 것인지 여부를 나타내는 값을 가져오거나 설정 합니다.Detect64BitPortabilityProblems은 컴파일러의 /Wp64(64비트 이식성 문제 검색) 옵션 기능을 노출합니다.
Public 속성 DisableLanguageExtensions 언어 확장을 표시하지 않을지 여부를 나타내는 값을 가져오거나 설정합니다.DisableLanguageExtensions은 컴파일러의 /Za, /Ze(언어 확장 사용 안 함) 옵션 기능을 노출합니다.
Public 속성 DisableSpecificWarnings 원하는 경고 번호를 사용하지 않도록 설정하는 값을 가져오거나 설정합니다. 세미콜론으로 구분된 목록에 번호를 입력합니다.DisableSpecificWarnings은 컴파일러의 /w, /Wn, /WX, /Wall, /wln, /wdn, /wen, /won(경고 수준) 옵션 기능을 노출합니다.
Public 속성 EnableEnhancedInstructionSet IA-32에 대한 SSE 및 SSE2 명령의 고급 기능과 같은 고급 명령 집합을 지원하는 프로세서의 명령을 사용하도록 설정하는 값을 가져오거나 설정합니다.EnableEnhancedInstructionSet은 컴파일러의 /ARCH 옵션 기능을 노출합니다.
Public 속성 EnableFiberSafeOptimizations 파이버 및 스레드 로컬 저장소 액세스를 사용할 경우 메모리 공간을 최적화할 수 있는 값을 가져오거나 설정합니다.EnableFiberSafeOptimizations은 컴파일러의 /GT(파이버 안전 스레드 로컬 저장소 지원) 옵션 기능을 노출합니다.
Public 속성 EnableFunctionLevelLinking 함수 수준 링크를 사용하도록 설정하는 값을 가져오거나 설정합니다.EnableFunctionLevelLinking은 컴파일러의 /Gy(함수 수준 링크 사용) 옵션 기능을 노출합니다.
Public 속성 EnableIntrinsicFunctions 크기가 더 클 수 있는 코드를 보다 빠르게 생성하기 위해 내장 함수를 사용할지 여부를 나타내는 값을 가져오거나 설정합니다.EnableIntrinsicFunctions은 컴파일러의 /Oi(내장 함수 만들기) 옵션 기능을 노출합니다.
Public 속성 EnablePREfast 네이티브 코드 분석을 사용할지 여부를 나타내는 값을 가져오거나 설정합니다.
Public 속성 ErrorReporting 컴파일러 오류 보고를 가져오거나 설정합니다.
Public 속성 ExceptionHandling throw된 예외로 인한 스택 해제 중 자동 개체에 대한 소멸자 호출에 사용되는 값을 가져오거나 설정합니다.ExceptionHandling은 컴파일러의 /EH(예외 처리 모델) 옵션 기능을 노출합니다.
Public 속성 ExecutionBucket 인프라입니다. Microsoft 내부에서만 사용합니다.
Public 속성 ExpandAttributedSource 소스 파일에 확장 특성을 삽입한 목록 파일을 만들지 여부를 나타내는 값을 가져오거나 설정합니다.ExpandAttributedSource은 컴파일러의 /Fx(삽입된 코드 병합) 옵션 기능을 노출합니다.
Public 속성 FavorSizeOrSpeed 코드 크기 또는 코드 속도 중 무엇을 선호할 것인지를 나타내는 값을 가져오거나 설정합니다.FavorSizeOrSpeed는 컴파일러의 /Os, /Ot(크기 우선 코드, 속도 우선 코드) 옵션 기능을 노출합니다.
Public 속성 FloatingPointExceptions 사용자 정의 부동 소수점 예외 처리를 사용할지 여부를 나타내는 값을 설정하거나 가져옵니다.
Public 속성 floatingPointModel 부동 소수점 모델을 설정하거나 가져옵니다.
Public 속성 ForceConformanceInForLoopScope 컴파일러가 For 루프의 로컬 범위를 따르도록 할지 여부를 나타내는 값을 가져오거나 설정합니다.ForceConformanceInForLoopScope은 컴파일러의 /Zc:forScope(for 루프 범위의 강제 규칙) 옵션 기능을 노출합니다.
Public 속성 ForcedIncludeFiles 강제 포함 파일을 하나 이상 지정하는 값을 가져오거나 설정합니다.ForcedIncludeFiles은 컴파일러의 /FI(강제 포함 파일 이름 지정) 옵션 기능을 노출합니다.
Public 속성 ForcedUsingFiles 파일 이름이 #using 지시문 (C++) 지시문에 전달된 것처럼 사용되도록 합니다.ForcedUsingFiles은 컴파일러의 /FU(강제 #using 파일 이름 지정) 옵션 기능을 노출합니다.
Public 속성 FullIncludePath 빌드에 포함된 모든 디렉터리의 목록을 가져옵니다. /I로 지정된 디렉터리와 VC++ Directories 대화 상자에서 지정된 디렉터리를 연결합니다.이러한 디렉터리에 있는 매크로도 평가됩니다.
Public 속성 GeneratePreprocessedFile 이 구성에 대한 전처리 옵션을 가져오거나 설정합니다.GeneratePreprocessedFile은 C++ 컴파일러의 /EP(#line 지시문 없이 stdout로 전처리)/P(파일 전처리) 옵션 기능을 노출합니다.
Public 속성 GenerateXMLDocumentationFiles XML 설명서 파일을 생성할지 여부를 나타내는 값을 설정하거나 가져옵니다.
Public 속성 IgnoreStandardIncludePath 표준 포함 경로를 무시할지 여부를 나타내는 값을 가져오거나 설정합니다.IgnoreStandardIncludePath는 컴파일러의 /X(표준 포함 경로 무시) 옵션, MIDL 컴파일러의 MIDL 속성 페이지: 일반 옵션 및 리소스 컴파일러의 리소스 속성 페이지 옵션의 기능을 노출합니다.
Public 속성 InlineFunctionExpansion 빌드에 대한 인라인 함수 확장 수준을 가져오거나 설정합니다.InlineFunctionExpansion은 컴파일러의 /Ob(인라인 함수 확장) 옵션 기능을 노출합니다.
Public 속성 KeepComments 소스 코드의 주석 스트립을 표시하지 않을지 여부를 나타내는 값을 가져오거나 설정합니다.KeepComments은 컴파일러의 /C(전처리 중에 주석 유지) 옵션 기능을 노출합니다.
Public 속성 MinimalRebuild C++ 클래스 정의에 대한 변경 내용을 검색하여 변경된 소스 파일만 다시 컴파일할지 여부를 나타내는 값을 가져오거나 설정합니다.MinimalRebuild은 컴파일러의 /Gm(최소 다시 빌드 사용) 옵션 기능을 노출합니다.
Public 속성 ObjectFile 기본 개체 파일 이름을 재정의할 이름을 가져오거나 설정합니다.ObjectFile은 컴파일러의 /Fo(개체 파일 이름) 옵션 기능을 노출합니다.
Public 속성 OmitDefaultLibName 기본 라이브러리 이름을 생략할지 여부를 나타내는 값을 가져오거나 설정합니다.
Public 속성 OmitFramePointers 프레임 포인터를 표시하지 않을지 여부를 나타내는 값을 가져오거나 설정합니다.OmitFramePointers은 컴파일러의 /Oy(프레임 포인터 생략) 옵션 기능을 노출합니다.
Public 속성 OpenMP OpenMP를 사용할지 여부를 나타내는 값을 가져오거나 설정합니다.
Public 속성 Optimization 코드 최적화 옵션을 가져오거나 설정합니다.Optimization은 컴파일러의 /Od(디버그 비활성화), /O1, /O2(크기 최소화, 속도 최대화)/Ox(최대 최적화) 옵션 기능을 노출합니다.
Public 속성 PrecompiledHeaderFile 생성된 미리 컴파일된 헤더 파일의 경로 및/또는 이름을 가져오거나 설정합니다.PrecompiledHeaderFile은 컴파일러의 /Fp(.Pch 파일 이름 지정) 옵션 기능을 노출합니다.
Public 속성 PrecompiledHeaderThrough 미리 컴파일된 헤더 파일을 만들거나 사용할 때 사용할 헤더 파일 이름을 가져오거나 설정합니다.PrecompiledHeaderThrough는 컴파일러의 /Yc(미리 컴파일된 헤더 파일 만들기)/Yu(미리 컴파일된 헤더 파일 사용) 옵션의 기능을 노출합니다.
Public 속성 PreprocessorDefinitions 하나 이상의 전처리기 정의를 가져오거나 설정합니다.PreprocessorDefinitions는 컴파일러의 /D(전처리기 정의) 옵션, MIDL 컴파일러의 MIDL 속성 페이지: 일반 옵션 및 리소스 컴파일러의 리소스 속성 페이지 옵션의 기능을 노출합니다.
Public 속성 ProgramDataBaseFileName 컴파일러에서 생성된 .pdb 파일의 이름과 컴파일러에서 생성된 필수 .idb 파일의 기본 이름을 가져오거나 설정합니다.ProgramDataBaseFileName은 컴파일러의 /Fd(프로그램 데이터베이스 파일 이름) 옵션 기능을 노출합니다.
Public 속성 RuntimeLibrary 링크에 대한 런타임 라이브러리를 가져오거나 설정합니다.RuntimeLibrary는 컴파일러의 /MD, /MT, /LD(런타임 라이브러리 사용) 옵션 기능을 노출합니다.
Public 속성 RuntimeTypeInfo 런타임에 C++ 개체 형식(런타임 형식 정보)을 확인하기 위해 코드를 추가할지 여부를 나타내는 값을 가져오거나 설정합니다.RuntimeTypeInfo은 컴파일러의 /GR(런타임 형식 정보 사용) 옵션 기능을 노출합니다.
Public 속성 ShowIncludes 컴파일러 출력을 사용하여 포함 파일의 목록을 생성할지 여부를 나타내는 값을 가져오거나 설정 합니다.ShowIncludes은 컴파일러의 /showIncludes(포함 파일 나열) 옵션 기능을 노출합니다.
Public 속성 SmallerTypeCheck 더 작은 형식으로의 변환을 검사하도록 할 것인지 여부를 나타내는 값을 가져오거나 설정합니다.SmallerTypeCheck은 컴파일러의 /RTC(런타임 오류 검사) 옵션 기능을 노출합니다.
Public 속성 StringPooling 더 작은 컴파일된 코드를 만드는 데 읽기 전용 문자열 풀링을 사용할 수 있는지 여부를 나타내는 값을 가져오거나 설정합니다.StringPooling은 컴파일러의 /GF(중복 문자열 제거) 옵션 기능을 노출합니다.
Public 속성 StructMemberAlignment 1, 2, 4, 8 또는 16바이트 경계를 지정하여 구조체 멤버를 맞춥니다.StructMemberAlignment에서 C++ 컴파일러의 /Zp(구조체 멤버 맞춤) 옵션 및 MIDL 컴파일러의 MIDL 속성 페이지: 고급 옵션에 대한 기능을 노출합니다.
Public 속성 SuppressStartupBanner 시작 배너 및 정보 메시지를 표시하지 않습니다.
Public 속성 ToolKind 도구 종류의 이름을 가져옵니다.
Public 속성 toolName 지정된 도구의 이름을 가져옵니다.
Public 속성 ToolPath 지정된 도구의 경로를 가져옵니다.
Public 속성 TreatWChar_tAsBuiltInType wchar_t를 내장 형식으로 간주할지 여부를 나타내는 값을 가져오거나 설정합니다.TreatWChar_tAsBuiltInType은 컴파일러의 /Zc:wchar_t(wchar_t를 네이티브 형식으로 인식) 옵션 기능을 노출합니다.
Public 속성 UndefineAllPreprocessorDefinitions 이전에 정의한 모든 전처리기 값의 정의를 해제할지 여부를 나타내는 값을 가져오거나 설정합니다.UndefineAllPreprocessorDefinitions은 컴파일러의 /U, /u(기호 정의 해제) 옵션 기능을 노출합니다.
Public 속성 UndefinePreprocessorDefinitions 전처리기 정의 해제를 하나 이상 지정하는 값을 가져오거나 설정합니다.UndefinePreprocessorDefinitions는 C++ 컴파일러의 /U, /u(기호 정의 해제) 옵션 및 MIDL 컴파일러의 MIDL 속성 페이지: 고급 옵션의 기능을 노출합니다.
Public 속성 UseFullPaths 전체 경로를 사용할지 여부를 나타내는 값을 가져오거나 설정합니다.
Public 속성 UsePrecompiledHeader 빌드 중에 미리 컴파일된 헤더를 만들거나 사용할 수 있도록 하는 값을 가져오거나 설정합니다.UsePrecompiledHeader는 C++ 컴파일러의 /Yc(미리 컴파일된 헤더 파일 만들기)/Yu(미리 컴파일된 헤더 파일 사용) 옵션 기능을 노출합니다.
Public 속성 UseUnicodeResponseFiles 컴파일러가 유니코드 지시 파일을 사용하는지 여부를 지정합니다.
Public 속성 VCProjectEngine 프로젝트 엔진에 대한 포인터를 가져옵니다.
Public 속성 WarnAsError 컴파일러가 모든 경고를 오류로 처리할지 여부를 나타내는 값을 가져오거나 설정합니다.WarnAsError는 C++ 컴파일러의 /w, /Wn, /WX, /Wall, /wln, /wdn, /wen, /won(경고 수준) 옵션 및 MIDL 컴파일러의 MIDL 속성 페이지: 일반 옵션의 기능을 노출합니다.
Public 속성 WarningLevel 컴파일러가 문제가 있다고 생각되는 구문을 얼마나 엄격하게 확인하는지를 나타내는 값을 가져오거나 설정합니다.WarningLevel은 C++ 컴파일러의 /w, /Wn, /WX, /Wall, /wln, /wdn, /wen, /won(경고 수준) 옵션 및 MIDL 컴파일러의 /w, /Wn, /WX, /Wall, /wln, /wdn, /wen, /won(경고 수준) 옵션의 기능을 노출합니다.
Public 속성 WholeProgramOptimization 코드 생성을 링크 타임으로 지연시켜 크로스 모듈 최적화를 사용하도록 설정할지 여부를 나타내는 값을 가져오거나 설정합니다.WholeProgramOptimization은 컴파일러의 /GL(전체 프로그램 최적화) 옵션 기능을 노출합니다.
Public 속성 XMLDocumentationFileName XML 설명서 파일 이름을 가져오거나 설정합니다.

위쪽

메서드

  이름 설명
Public 메서드 get_PropertyOption 인프라입니다. Microsoft 내부에서만 사용합니다.

위쪽

설명

새 컴파일러 옵션 다음에 추가 된 Visual Studio 2005.

다음과 같은 컴파일러 옵션이 제거 되었습니다 Visual Studio 2005.

  • /Op 옵션

  • / G 6, /G7 및 /GB

예제

다음 예제에서는 사용 하는 방법을 보여 줍니다 있는 EnablePREfastAdditionalOptions 속성을 설정 하는 /analyze:WX- 전환. (두 속성을 모두이 작업을 수행 해야 합니다.) 지정 /analyze:WX- 로 컴파일하는 경우 수단 코드 분석 경고를 오류로 취급 되지 것입니다 /WX. 자세한 내용은 /analyze(코드 분석)을 참조하십시오.

이 예제를 실행 하 고 입력에 설명 된 대로이 예제를 실행 하려면 방법: 자동화 개체 모델 코드의 예제 컴파일 및 실행. 다음의 새 인스턴스에서 Visual Studio, 로드는 Visual C++ 프로젝트 및 추가 기능 관리자를 사용 하 여 추가 기능을 활성화 합니다.

' Add reference to Microsoft.VisualStudio.VCProjectEngine.
Imports System
Imports EnvDTE
Imports EnvDTE80
Imports System.Diagnostics
Imports Microsoft.VisualStudio.VCProjectEngine
Imports System.Text

Sub EnablePREfastExample(ByVal dte As DTE2)
    Dim prj As VCProject
    Dim cfgs, tools As IVCCollection
    Dim cfg As VCConfiguration
    Dim tool As VCCLCompilerTool
    Dim sb As New StringBuilder

    prj = CType(dte.Solution.Projects.Item(1).Object, _
      Microsoft.VisualStudio.VCProjectEngine.VCProject)
    cfgs = CType(prj.Configurations, _
      Microsoft.VisualStudio.VCProjectEngine.IVCCollection)
    cfg = CType(cfgs.Item(1), _
      Microsoft.VisualStudio.VCProjectEngine.VCConfiguration)
    tool = CType(cfg.Tools("VCCLCompilerTool"), _
      Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool)

    sb.Length = 0
    sb.Append("Current project PREfast setting: " _
      & tool.EnablePREfast & Environment.NewLine)
    sb.Append("Flag: " & tool.AdditionalOptions)
    MsgBox(sb.ToString)

    ' Toggle PREfast setting.
    If Not (tool.EnablePREfast = True) Then
        ' PREfast is not enabled. Turn it and the WX- flag on.
        tool.EnablePREfast = True
        tool.AdditionalOptions = "/analyze:WX-"
    Else
        ' Toggle the opposite.
        tool.EnablePREfast = False
        tool.AdditionalOptions = "/analyze:WX"
    End If
    sb.Length = 0
    sb.Append("New project PREfast setting: " _
      & tool.EnablePREfast & Environment.NewLine)
    sb.Append("Flag: " & tool.AdditionalOptions)
    MsgBox(sb.ToString)
End Sub
// Add references to Microsoft.VisualStudio.VCProjectEngine and 
// System.Windows.Forms.
using System;
using Extensibility;
using EnvDTE;
using EnvDTE80;
using Microsoft.VisualStudio.VCProjectEngine;
using System.Text;
using System.Windows.Forms;

public void EnablePREfastExample(DTE2 dte)
{
    try
    {
        VCProject prj;
        IVCCollection cfgs, tools;
        VCConfiguration cfg;
        VCCLCompilerTool tool;
        StringBuilder sb = new StringBuilder();

        prj = (Microsoft.VisualStudio.VCProjectEngine.VCProject)
          dte.Solution.Projects.Item(1).Object;
        cfgs = 
          (Microsoft.VisualStudio.VCProjectEngine.IVCCollection)
          prj.Configurations;
        cfg = 
          (Microsoft.VisualStudio.VCProjectEngine.VCConfiguration)
           cfgs.Item(1);
        tools = 
          (Microsoft.VisualStudio.VCProjectEngine.IVCCollection)
          cfg.Tools;
        tool = 
          (Microsoft.VisualStudio.VCProjectEngine.VCCLCompilerTool)
          tools.Item("VCCLCompilerTool");
                                
        sb.Length = 0;
        sb.Append("Current project PREfast setting: " +
          tool.EnablePREfast + Environment.NewLine);
        sb.Append("Flag: " + tool.AdditionalOptions);
        MessageBox.Show(sb.ToString());

        // Toggle PREfast setting.
        if (!(tool.EnablePREfast == true))
        {
            // PREfast is not enabled. Turn it and the WX- flag on.
            tool.EnablePREfast = true;
            tool.AdditionalOptions = "/analyze:WX-";
        }
        else
        {
            // Toggle the opposite.
            tool.EnablePREfast = false;
            tool.AdditionalOptions = "/analyze:WX";
        }
        sb.Length = 0;
        sb.Append("New project PREfast setting: " +
          tool.EnablePREfast + Environment.NewLine);
        sb.Append("Flag: " + tool.AdditionalOptions);
        MessageBox.Show(sb.ToString());
    }
    catch (System.Exception errmsg)
    {
        MessageBox.Show("ERROR! " + errmsg.Message);
    }
}

참고 항목

참조

Microsoft.VisualStudio.VCProjectEngine 네임스페이스

기타 리소스

Walkthrough: Using /clr:pure Features