2013-03-23 151 views
0

我爲我的項目使用ICSharpCode.SharpDevelop庫。我想弄清楚如何構造一個DefaultProject的實例,以便它具有所有必要的引用。所以,我需要像使用SharpDevelop庫,如何添加對項目的引用?

projectContent.AddReferencedContent(_projectContentRegistry.GetProjectContentForReference("System.Core", "System.Core")); 

除了它不工作 - GetProjectContentForReference(..)始終返回null,不管我試圖提供的參數。

回答

1

它看起來像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); 
相關問題