문제

이것은 멀리 스트레칭이지만 가능한 한 최선의 문제를 설명하려고 노력할 것입니다. 나는 edmgen.exe에서 생성 된 3CS 파일을 컴파일하기 위해 .NET 3.5의 Codedom 컴파일러를 사용하고 있으며,이 중 2는 Dynamically Generate 파일입니다. 컴파일 코드는 다음과 같습니다

CompilerResults results = compiler.CompileAssemblyFromFileBatch(parameters, new string[]{string.Format("{0}\\Dynamic.cs", Directory.GetCurrentDirectory()),
                string.Format("{0}\\{1}.ObjectLayer.cs", Directory.GetCurrentDirectory(), ModelName), string.Format("{0}\\{1}.Views.cs", Directory.GetCurrentDirectory(), ModelName)});
.

이 파일 중 세 가지 모든 파일이 함께 컴파일되면이 오류가 발생합니다

클래스, 구조체 또는 인터페이스 멤버 선언

에서 토큰 'void'가 잘못되었습니다.

이 오류가 ObjectLayer.cs

에있는이 코드 라인을 참조하는 것으로 가정합니다.

부분 void onidchanged ();

이 3 개의 파일이 새 VS2010 프로젝트에 포함되어 있고 컴파일러를 통해 컴파일되면이 오류는 Codedom 컴파일러에서만 발생합니다 ... "부분 void"로 문제가 발생합니다 ... .

여기서이 문제와 매우 유사한 문제를 발견했습니다. http : // social. .msdn.microsoft.com / forums / en-us / linqproject 일반 / 실 / 85E085C8-B6AC-4CAE-B59D-7B9CE7758122 /

그러나 CodeDom 컴파일러가 VS 컴파일러가 아닌 코드를 사용하고 있기 때문에 해결되지 않습니다.

나는 .NET 3.5 명령 줄 컴파일러 (csc.exe)를 시도했고 이것은 또한 잘 작동했다는 점에 유의하고 싶습니다. 또한 또한이 정확한 코드를 테스트했습니다. 이 문제는 .NET 3.5

에만 오직 올라가는 것 같습니다.

누구든지 이걸로 실행하거나 .NET 3.5 코딩 컴파일러가 부분 보이드에 문제가 있는지에 대한 아이디어가 있습니까?

도움이 되었습니까?

해결책

문제 해결!

이것은 여전히 내 의견으로 여전히 이상하지만 .NET 3.5 아래에 기본적으로 CODEDOM 컴파일러는 .NET 2 CSC.EXE 컴파일러를 사용하려고합니다.

컴파일러 버전을 지정해야합니다

var csc = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });
.

하나의 모든 이슈가 모두 해결되었습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top