它看起來像SharpDevelop 4.x中的ProjectContentRegistry類中的一個錯誤。如果您調試GetProjectContentForReference()方法,那麼您可以看到它正在錯誤的GAC文件夾中查找。它正在尋找的文件夾
System.Core\4.0.0.0__b77a5c561934e089\System.Core.dll
中時,它應該看的文件夾
System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll
我懷疑這個錯誤沒有被注意到,因爲SharpDevelop的現在使用的MSBuild制定程序集引用的位置英寸隨着System.Core程序例如,它會發現在基於項目的目標框架的引用程序文件夾中的組件:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Core.dll
你可以做的反而是找到使用GacInterop類是ICSharpCode的部分文件名。 SharpDevelop.Dom程序集。下面的代碼應該返回一個非空的項目內容對象。
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);