vs의 솔루션 구조는 다음과 같습니다.gac에 어셈블리를 추가 할 때 csharpcodeprovider를 컴파일 할 수 없습니다
- MyRuleEngineFramework
- RulesEditor
MyRuleEngineFramework 클래스 라이브러리입니다. RulesEditor는 winforms 프로젝트입니다. 후자는 전자를 참조하지만, 어셈블리는 에디터 프로젝트 내부에서 소비되지 않습니다.
CSharpCodeProvider provider = new CSharpCodeProvider();
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("System.dll");
cp.ReferencedAssemblies.Add("MyRuleEngineFramework.dll");
cp.OutputAssembly = "temp.dll";
cp.GenerateInMemory = false;
CompilerResults cr = provider.CompileAssemblyFromSource(cp, SourceCode);
위의 코드는 잘 실행하고 나는 컴파일 된 어셈블리를 처음 가지고 :
내가 참조의 종류를 할 코드의 단지 몇 줄이 있습니다.
그런 다음 MyRuleEngineFramework.dll을 gac에 등록했습니다.
이 후 생성 된 코드 (SourceCode
)가 컴파일되지 않았습니다. 그런 다음 편집기 프로젝트에서 dll에 대한 참조를 제거했지만 (어셈블리는 여전히 Gac에 있었지만) 컴파일되지 않았습니다.
왜 이런 일이 발생합니까?
"컴파일하지 않았다"는 것은 무엇을 의미합니까? 오류 메시지는 무엇입니까? – svick