2017-02-17 3 views
0

Я отвечаю за перенос основных библиотек наших компаний из Compact Framework 2.0, который использовался для работы в Visual Studio 2008 в Visual Studio 2015, Update 3 и .Net 4.6. Я создал новые библиотеки классов и изменил ссылки, чтобы указать на соответствующую .Net версию старых библиотек. Например, если у нас была библиотека ProdoctCore, которая ссылалась на Sender.dll и Utils.dll, в новой библиотеке ProducCoreDotNet, я добавил ссылки на 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.

Я прочитал пару подобных потоков в SO, но в отличие от того, что упоминалось в 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 Я добавил все ссылки в качестве ссылки для ссылок -> Обзор, перейдя в папку bin/Debug каждой версии узлов DotNet и добавив их. Обратите внимание, что пространство имен Utils и UtilsDotNet одинаково. Кроме того, я получаю сообщение об этом конкретном интерфейсе, несмотря на то, что многие ссылочные сборки аналогичны. –

+0

Предполагая, что ProductCoreDotNet, SenderDotNet и UtilsDotNet находятся в одном решении VS, я бы попытался удалить все ссылки в рамках решения, а затем повторно добавить их через Add Reference -> Project. Затем перестройте все. – wablab

ответ

1

Мы, наконец, нашли причину. Мы использовали другую ссылку, использующую версию Utils версии 1.5. Поэтому я создал другую библиотеку классов для этой ссылки и использовал новый UtilsDotNet в качестве ссылки, и проблема была исправлена.

Смежные вопросы