2017-02-17 55 views
0

我負責將用於在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; } 
} 

因此,我出來的想法,並希望你的幫助。另外,請詳細說明你的答案,因爲我之前沒有做過這樣的事情。

+0

我注意到,錯誤是建議你添加一個對「Utils」的引用而不是「UtilsDotNet」。您的新項目是否可以引用舊的DLL(即通過添加引用 - >瀏覽而不是通過添加引用 - >項目)? – wablab

+0

@wablab我已經添加了所有引用作爲添加引用 - >瀏覽通過轉到程序集的每個DotNet版本的bin/Debug文件夾並添加它們。請注意,Utils和UtilsDotNet的命名空間都是相同的。此外,儘管有許多以相同方式引用的程序集,但我仍然只能得到有關此特定接口的此錯誤消息。 –

+0

假設ProductCoreDotNet,SenderDotNet和UtilsDotNet都在同一個VS解決方案中,我會嘗試刪除解決方案中的所有引用,然後通過添加引用 - >項目重新添加它們。然後重建所有。 – wablab

回答

1

我們終於找到原因了。我們使用另一個使用Utils版本1.5的參考。所以我爲該參考創建了另一個類庫,並使用新的UtilsDotNet作爲參考,並修復了問題。

相關問題