.NET 3.5 Codedom 컴파일러 홀수 오류를 생성합니다
-
27-09-2020 - |
문제
이것은 멀리 스트레칭이지만 가능한 한 최선의 문제를 설명하려고 노력할 것입니다. 나는 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" } });
.
하나의 모든 이슈가 모두 해결되었습니다.