我負責將用於在Visual Studio 2008上運行的Compact Framework 2.0中的公司核心庫遷移到Visual Studio 2015,Update 3和.Net 4.6。我創建了新的類庫,並將參考文獻更改爲指向舊版庫的相應.Net版本。例如,如果我們在新的ProducCoreDotNet庫中有一個引用Sender.dll和Utils.dll的ProdoctCore庫,我已經添加了對SenderDotNet.dll和UtilsDotNet.dll的引用。然後,我通過添加「作爲鏈接」將舊Compact Framework的類文件添加到新解決方案中。所以基本上,項目名稱具有擴展DotNet,但名稱空間的名稱與之前完全相同。C# - 未引用的程序集中定義了引用類型「ISomeInterface」
現在我面臨的問題是,我得到一個奇怪的錯誤:
「‘IMonitorComponent’在未引用的程序中定義的引用類型必須添加到程序集的引用'Utils,Version = 1.5.0.0,Culture = neutral,PublicKeyToken = null'「
但是,我的UtilsDotNet的版本是1.0.0.0,舊的Utils是版本2.0.0.0。
我讀過幾個類似的線程,但與this question中提到的不同,IMonitorComponent沒有任何其他程序集的引用。它只是一個與幾個屬性的接口:
public enum COMPONENT_STATUS
{
ERROR,
WARNING,
OK,
UNKNOWN,
DISABLED
}
public class ComponentStatusProperty
{
public ComponentStatusProperty(string name, COMPONENT_STATUS status, string message)
{
ComponentName = name;
Status = status;
Message = message;
}
public COMPONENT_STATUS Status { get; set; }
public string Message { get; set; }
public string ComponentName { get; set; }
}
public interface IMonitorComponent
{
string Name { get; }
List<ComponentStatusProperty> Statuses { get; }
bool ComponentSoBrokenThatTheDeviceCannotWork { get; }
}
因此,我出來的想法,並希望你的幫助。另外,請詳細說明你的答案,因爲我之前沒有做過這樣的事情。
我注意到,錯誤是建議你添加一個對「Utils」的引用而不是「UtilsDotNet」。您的新項目是否可以引用舊的DLL(即通過添加引用 - >瀏覽而不是通過添加引用 - >項目)? – wablab
@wablab我已經添加了所有引用作爲添加引用 - >瀏覽通過轉到程序集的每個DotNet版本的bin/Debug文件夾並添加它們。請注意,Utils和UtilsDotNet的命名空間都是相同的。此外,儘管有許多以相同方式引用的程序集,但我仍然只能得到有關此特定接口的此錯誤消息。 –
假設ProductCoreDotNet,SenderDotNet和UtilsDotNet都在同一個VS解決方案中,我會嘗試刪除解決方案中的所有引用,然後通過添加引用 - >項目重新添加它們。然後重建所有。 – wablab