문제

CodeDom을 사용하여 코드를 동적으로 컴파일하려고 합니다.다른 어셈블리는 로드할 수 있지만 System.Data.Linq.dll은 로드할 수 없습니다.오류가 발생합니다.

메타데이터 파일 'System.Data.Linq.dll'을 찾을 수 없습니다.

내 코드는 다음과 같습니다

CompilerParameters compilerParams = new CompilerParameters();
compilerParams.CompilerOptions = "/target:library /optimize";
compilerParams.GenerateExecutable = false;
compilerParams.GenerateInMemory = true;
compilerParams.IncludeDebugInformation = false;
compilerParams.ReferencedAssemblies.Add("mscorlib.dll");
compilerParams.ReferencedAssemblies.Add("System.dll");
compilerParams.ReferencedAssemblies.Add("System.Data.Linq.dll");

어떤 아이디어가 있나요?

도움이 되었습니까?

해결책

이는 이 어셈블리가 mscorlib와 다른 위치에 저장되어 있기 때문일 수 있습니다.어셈블리에 대한 전체 경로를 제공하면 작동합니다.전체 경로를 얻는 가장 편리한 방법은 .NET 로더가 작업을 수행하도록 하는 것입니다.나는 다음과 같은 것을 시도할 것입니다:

compilerParams.ReferencedAssemblies.Add(typeof(DataContext).Assembly.Location);

다른 팁

어리석은 대답일 수도 있지만 코드가 .NET Framework 3.5가 설치된 컴퓨터에서 실행되고 있습니까?

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