Фантомный тип отсутствует при сборке сборки .net

Я разрабатываю приложение .NET на С# (консольное приложение .NET Framework 3.5) с использованием Visual Studio 2010. (Win7 64bit) После сбоя машины я скопировал свой проект со старого HD на новый. Теперь на новой машине всякий раз, когда я строю, я получаю сообщение об ошибке:

Тип «Bloomberglp.AppPortalApi.DataPersistence.ExtensibleDataObject» определен в сборке, на которую нет ссылок. Вы должны добавить ссылку на сборку «Bloomberglp.AppPortalAPI, версия = 1.3.5.1, культура = нейтральная, PublicKeyToken = 51f5d93763bdb58e».

Он прикреплен к определению первого метода в классе «Программа», в котором он явно не упоминается.

Однако я нигде в своем проекте не использую этот тип, и ни одна из ссылок в моем проекте также не использует его. Я использовал его ранее, но все ссылки на него были удалены... так я думал. Я искал его, но не смог найти ни в одном из файлов .cs. Его также нельзя найти в обозревателе объектов. Так где/как мне его искать?

Изменить: Найдено Тип C#, определенный в сборке, на которую нет ссылок ; в .csproj нет ссылок на тип или dll

Переключение моей цели между x86 и любым процессором и перекомпиляция не имели никакого эффекта, как и обратное переключение.


person AnotherParker    schedule 31.12.2012    source источник
comment
Если его нет в вашем файле .csproj, это странно ... попробуйте перейти в меню «Сборка» -> «Пакетная сборка» -> кнопка «Выбрать все», затем нажмите «Очистить». Проверьте окно вывода. Вы должны увидеть ========== Очистить: X успешно, 0 не удалось, 0 пропущено ========== После этого пересоберите решение. Я надеюсь, что это помогает!   -  person Pavel Kovalev    schedule 01.01.2013
comment
Извините @PavelKovalev - это не действует, все то же сообщение об ошибке.   -  person AnotherParker    schedule 01.01.2013


Ответы (1)


Обычно это косвенная ссылка. Другими словами, вы ссылаетесь на уже построенную сборку, а эта сборка ссылается на тип в "фантомном" типе. Таким образом, вы вообще не увидите его в файле проекта. Вы увидите в проекте, который построил эту сборку, наверняка некоторые шансы, что вы потеряли эту сборку из-за сбоя или просто забыли ее скопировать.

Еще один классический способ получить эту проблему — нацелиться на профиль клиента, бич VS2010, который выбирает его по умолчанию. Если сборка ссылается на тип из сборки, которая не является частью профиля клиента, например System.Web, компилятор становится глупым, когда сборка отклоняется, поскольку ему нужна недоступная сборка .NET Framework. Вы получаете предупреждение об этом, но его легко проигнорировать, если сосредоточиться на ошибке. В остальном хорошо сочетается с тем бизнесом, которым занимается Блумберг, это компания-паутинка. Вы исправите это, изменив цель платформы на полную.

person Hans Passant    schedule 31.12.2012
comment
вздох так и подозревал. Как мне найти, какая ссылка имеет ссылку на фантомный тип? - person AnotherParker; 02.01.2013
comment
Решил проблему, создав поддельные типы с пустыми методами для каждого из внешних типов, используемых из каждой ссылки. АРХ. Хотелось бы лучшего способа. - person AnotherParker; 03.01.2013