2010-07-19 1 views
-1

실행 파일의 디렉터리에있는 어셈블리를 참조해야하는 CodeDom 설치가 있습니다. 그러나 실행 디렉터리가 아닌 이러한 어셈블리에 대해 작업 디렉터리와 GAC 만 검색됩니다.CodeDom 컴파일러는 어셈블리 참조에 실행 디렉터리를 사용하지 않습니다.

var compilerOptions = new CompilerOptions { 
    ReferencedAssemblies = { 
     "System.dll", 
     "System.Core.dll", 
     "Assembly0.dll", 
     "Assembly1.dll" 
    } 
}; 

C# 컴파일러는 검색합니다 :

  1. 응용 프로그램 작업 디렉토리
  2. GAC

을 그것을 실행에 Assembly0.dll도 Assembly1.dll 검색하지 않습니다 어떤 이유 예배 규칙서.

+0

C# 컴파일러는 GAC에서 compilerOptions의 참조 된 어셈블리를 검색합니까? 나는 그것이 csc.exe의 동일한 디렉토리에 있기 때문에 System.dll을 찾을 수 있다고 생각합니다. compilerOption이 GAC의 사용자 설치 어셈블리를 참조하는 경우 위의 설치가 컴파일되지 않을 것입니다. – Sridarshan

답변

2

"실행 디렉터리"는 csc.exe 프로세스가 아닌 프로세스에만 관련이 있습니다. 어셈블리 참조의 전체 경로를 생성하면됩니다. System.Reflection.Assembly.GetEntryAssembly(). 위치

+0

이것이 내가 한 일입니다. ProcMon을 사용하기 전까지는 CSC에 전달된다는 것이 즉시 명백하지 않습니다. – user7116

관련 문제