2012-12-31 1 views
0

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

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

Прилагается к определению первого метода в классе «Программа», который, очевидно, не упоминает об этом.

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

Редактировать: Найдено C# type defined in an assembly that is not referenced; нет ссылок на тип или dll в .csproj

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

+0

Если это не существует в вашем файле .csproj, это странно ... попробуйте перейти в меню «Сборка» -> «Пакетная сборка» -> «Выбрать все», затем нажмите «Очистить». Проверьте окно вывода. Предположим, что вы видите «========== Чистый: X преуспел, 0 не удалось, 0 пропущено ==========« После этого повторно создайте решение. Я надеюсь, что это помогает! –

+0

Извините @PavelKovalev - это не имеет никакого эффекта, все же такое же сообщение об ошибке. – AnotherParker

ответ

2

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

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

+0

* вздох * подозреваемый как много. Как мне найти, какая ссылка имеет ссылку на фантомный тип? – AnotherParker

+0

Решает проблему, создавая поддельные типы с пустыми методами для каждого из внешних типов, используемых из каждой ссылки. ARGH. Желание было лучше. – AnotherParker