0

런타임에 코드가 컴파일되고 코드가 문자열에 포함되어 있고 문자열이 ScintillaNET 컨트롤에서 값을 가져오고 텍스트 만 반환하는 C# 응용 프로그램을 만듭니다. 코드가있는 문자열이 의도 한대로 작동 함).소스 코드가 포함 된 문자열에서 클래스 객체 만들기

제 질문은 런타임에이 소스 코드에서 일종의 클래스 개체를 만드는 방법이 있습니까?

namespace _Testing { 

class Program { 
    static void Main(string[] args) { 
     Console.Title = "Program"; 
     Console.WriteLine("If you can read this, it's all good!"); 
     Console.ReadKey(); 
    } 
    } 
} 

이 코드는 (- 내가 컴파일 할 클래스의 배열을 전달 해요 때문에 CompileAssemblyFromSourceBatch으로) 실행시 내에서는 CSharpCodeProvider 컴파일러에 의해 컴파일되고있다 : 예를 들어, 문자열이 값이 포함되어 있습니다. 그러나 런타임시 컴파일러의 MainClass 속성을 설정할 수 있기를 원하고 클래스에서 네임 스페이스를 가져와야합니다.

그래서 나는 내 목표를 달성 할 수있는 각 클래스 - 소스 코드 문자열의 개체를 만들 생각을하고있었습니다. 다른 아이디어도 물론 환영합니다.

+0

http://support 2.6.microsoft.com/kb/304655 도움을 받으실 수 있습니다. – Sjips

+0

네, 린 로진을 원할 것입니다. C# 용 동적 컴파일러입니다. 경고, 조금 깊은 ... –

+0

@Sjips, 현재 응용 프로그램은 이미 완전히 작동하는 컴파일 기능을 가지고 있습니다. 이미 프로젝트 시작 부분에 몇 번 그 기사를 참고했습니다.). 남아있는 유일한 문제는 클래스의 네임 스페이스를 문자열 소스에서 가져 오는 것입니다.이를 달성하기 위해 깨끗하게 처리하려고합니다. – Fluppe

답변

0

동적 코드를 컴파일하고로드하기 위해 원하는 것은 CSharpCodeProver가 아닙니다. 귀하의 경우에는 .Net Framework에서 DLR (CLR 아님)을 사용하는 것이 좋습니다.

또는 당신은 당신이 작동하지 않습니다하려고 무엇 .NET-Compiler-Plattform

좀 걸릴 수 있습니다.

+0

흠, Roslyn 컴파일러는 내가 시도하고있는 작은 기능에 약간 무거워 보입니다. 덧붙여, 컴파일 할 클래스에서 네임 스페이스를 가져 오는 것에 대한 다른 제안이 있습니까? 이것은 기본적으로 제가 여기서하려고하는 것입니다, 아마도 소스 코드 문자열의 객체를 만드는 것에 대한 나의 아이디어는 너무 멀리 가져 왔지만 그것을 할 수있는 깔끔한 방법이라고 생각했습니다 – Fluppe