SharpDevelop 4.x의 ProjectContentRegistry 클래스의 버그처럼 보입니다. GetProjectContentForReference() 메서드를 디버깅하면 잘못된 GAC 폴더가 찾고 있음을 알 수 있습니다. 이 폴더 내가 SharpDevelop 지금 어셈블리 참조의 위치를 일의 MSBuild를 사용하기 때문에이 버그가 발견되지 않은 의심
System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll
에보고해야 할 때 폴더
System.Core\4.0.0.0__b77a5c561934e089\System.Core.dll
에서 찾고 있습니다. System.Core으로 예를 들어이 프로젝트의 대상 프레임 워크를 기반으로 참조 어셈블리 폴더에있는 어셈블리를 찾을 수 있습니다 :
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Core.dll
은 당신이 대신 할 수있는 것은 ICSharpCode의 일부인 GacInterop 클래스를 사용하여 파일 이름을 찾을 수 있습니다. SharpDevelop.Dom 어셈블리. 아래 코드는 null이 아닌 프로젝트 내용 객체를 반환해야합니다.
var reference = new DomAssemblyName("System.Core");
reference = GacInterop.FindBestMatchingAssemblyName(reference);
string fileName = GacInterop.FindAssemblyInNetGac(reference);
var registry = new ProjectContentRegistry();
IProjectContent pc = registry.GetProjectContentForReference("System.Core", fileName);