CodeDomProvider에서 덜 엄격한 컴파일 방법이 있습니까? 내가 컴파일하고 사용하여 내 이미 실행중인 프로그램에 DLL 파일을로드하려고 :덜 엄격한 CodeDomProvider를 DLL 컴파일 용으로
오류 #의 CS0122 메시지 : 'MCLight.Independent'으로 인해 액세스 할 수없는
public static String Compile(string commandName, string source = "")
{
private static CodeDomProvider compiler = new CSharpCodeProvider(new Dictionary<string, string>() { { "CompilerVersion", "v3.5" } });
private static CompilerParameters parameters = new CompilerParameters();
parameters.GenerateExecutable = false;
parameters.MainClass = commandName;
parameters.OutputAssembly = dll;
parameters.ReferencedAssemblies.Add("MCLight_.dll");
parameters.CompilerOptions = "/optimize";
parameters.WarningLevel = 4;
parameters.TreatWarningsAsErrors = false;
StreamReader sr = new StreamReader(sourcepath + "cmd" + commandName + ".cs");
results = compiler.CompileAssemblyFromSource(parameters, sr.ReadToEnd());
.....
}
문제 것은 다음과 같은 오류가 있다는 것입니다 1178
및
오류 #의 CS1501 메시지 : 그 보호 수준 라인에 방법 '1'인수를 '찾기'없음 과부하,라인 : 617
이 발생합니다.
이제 VS에서 내 솔루션의 일부로 컴파일 할 때이 클래스가 잘 컴파일된다는 사실을 알고 있습니다. 그러나 별도로 컴파일 할 때 이러한 오류가 발생합니다. 컴파일러가이 오류를 무시할 수있는 방법이 있습니까? 응용 프로그램에 제대로 연결된다는 것을 알기 때문에?
parameters.WarningLevel = 1;
을하지만 당신이 컴파일하는 코드의 소스를 보지 않고 확실히 말할 어렵다 :
일반적으로 컴파일러는 단순히 오류를 무시할 수 없습니다. 오류는 컴파일러가 코드를 컴파일 할 수 없었고 코드가 정확히 수행해야하는 것을 모르기 때문에 컴파일 된 어셈블리를 생성 할 수 없음을 의미합니다. – svick
이 오류를 실제로 재현하는 데 사용할 수있는 간단한 샘플 코드를 게시 할 수 있습니까? (참조 된 어셈블리의 코드 포함) – svick
글쎄 3 개의 전체 클래스를 게시하고 싶지는 않습니다. 당신이 알아야 할 것은 "Independent"가 동일한 솔루션에 속한 또 다른 클래스이고 액세스하려는 메소드가 정적 메소드입니다. 잘못된 개수의 인수 오류가 "플레이어"클래스의 정적 메서드에 액세스하려고합니다. 이 메서드는 선택적 매개 변수가 있습니다. 그러나 컴파일러는 선택적 매개 변수를 필수 매개 변수로 취급합니다. 코드에 오류가 없습니다. 그렇다면 원래의 솔루션은 컴파일되지 않습니다. 따라서 어떤 오류도 수정하지 않아도됩니다. 컴파일러가 오류가있는 이유를 알아야합니다. –