Я отвечаю за перенос основных библиотек наших компаний из 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; }
}
Поэтому у меня нет идей и я буду благодарен за вашу помощь. Кроме того, пожалуйста, подробно изложите свои ответы, поскольку я раньше ничего подобного не делал.
Я заметил, что ошибка указывает на добавление ссылки на «Utils», а не на «UtilsDotNet». Может ли ваш новый проект ссылаться на старую DLL (т. Е. Через ссылку «Добавить ссылку» -> «Обзор», а не «Добавить ссылку» -> «Проект»)? – wablab
@wablab Я добавил все ссылки в качестве ссылки для ссылок -> Обзор, перейдя в папку bin/Debug каждой версии узлов DotNet и добавив их. Обратите внимание, что пространство имен Utils и UtilsDotNet одинаково. Кроме того, я получаю сообщение об этом конкретном интерфейсе, несмотря на то, что многие ссылочные сборки аналогичны. –
Предполагая, что ProductCoreDotNet, SenderDotNet и UtilsDotNet находятся в одном решении VS, я бы попытался удалить все ссылки в рамках решения, а затем повторно добавить их через Add Reference -> Project. Затем перестройте все. – wablab