Приложение создания ошибки сборки - Обнаружено несколько версий сборки - PullRequest
2 голосов
/ 05 мая 2011

Я работал сегодня так же, как и каждый день, когда я пытался построить свой проект, и я получил эту ошибку:

Обнаружено несколько версий сборки с GUID '00020430-0000-0000-c000-000000000046.Попробуйте предварительно импортировать одну из этих сборок.

Он говорит, что проблема в файле TlbImp, который находится в корневом каталоге моего приложения.Единственная проблема заключается в том, что у меня нет такого файла в моем проекте и, насколько я помню, никогда не было.

Я работаю с веб-приложением с Visual Studio 2010 (не уверен, что эта информация помогает, но хорошо, что угодно).

Ответы [ 5 ]

6 голосов
/ 08 ноября 2011

Спасибо @DavRob, но это был не тот ответ, который я искал.@dev_Gabriel Мне удалось это исправить, вот шаги, которые работали для меня:

  1. В Visual Studio щелкните правой кнопкой мыши Project
  2. Выберите свойства
  3. Выберите ссылкивкладка.
  4. Проверьте, нет ли каких-либо ссылок из папки obj \ Debug, и удалите их.
2 голосов
/ 05 мая 2011

Для этого есть Microsoft connect Ошибка заполнена для этого

В нем говорится, что существует проблема со ссылкой на компонент COM.

Это было исправленои должен быть доступен в будущем выпуске Visual Studio.
(Примечание: это не вошло в SP1.)

Tlbimp - импортер библиотек типов .Visual Studio использует его для генерации сборки взаимодействия ссылок на добавленные вами библиотеки COM.

1 голос
/ 09 января 2014

Просто добавьте к ответу @ JeremyThompson:

Моя проблема возникла из-за ссылки на COM-объект путем перехода «Добавить ссылку» и поиска в .exe для приложения (например, C: \ Program Files (x86) \ ProFile \ profile.exe). Это добавило ссылку «Interop.Profile.dll» (очевидно, она будет отличаться в зависимости от SDK, к которому вы пытаетесь получить доступ), которая была расположена в папке obj / Debug, как описано @ JeremyThompson.

В моем конкретном случае у меня был Interop.Profile.dll, на который ссылались в двух проектах, один из которых не получал ошибку выше и был успешно собран. Я перешел в папку obj / Debug для успешно созданного проекта и скопировал Interop.Profile.dll в папку DLL моего решения (это просто папка, которую я создал, чтобы хранить все мои сборки в одном месте, но технически вы можете поместить свой COM DLL где-нибудь за пределами папки obj / Debug), а затем изменил ссылки обоих моих проектов, указав на Interop.Profile.dll, который находится в моей папке DLLs, а не в папке obj / Debug.

Как только я это сделал, мое приложение было успешно собрано (с помощью «Перестроить» или «Очистить, а затем»).

Очевидно, мой случай довольно специфичен, но, надеюсь, он кому-нибудь поможет.

0 голосов
/ 17 ноября 2014

У меня только что было это сегодня при переносе проекта VS 2008 в VS 2013 с другим поворотом.Мне понадобилось время, чтобы разобраться, так что это может помочь кому-то еще.У меня есть решение с 10 или около того проектов в нем.Одним из проектов является VB, который ссылается на старый OCX с графическим интерфейсом.Чтобы создать требуемые ссылки взаимодействия, вам нужно перетащить OCX на Winform, которая извлекает другие ссылки, а также создать необходимую ссылку взаимодействия AX.Все эти библиотеки взаимодействия создаются в пути ... \ obj \ debug \.Я получал несколько «множественных версий» ошибок, но не из проекта со ссылками на COM, а из другого проекта C #, который ссылался на проект VB.Чтобы избавиться от этого, я скопировал файлы взаимодействия, созданные проектом VB, в папку ... \ obj \ debug \ проекта C #.Это немного сложно, так как каждый раз, когда вы чистите проект, вам нужно повторно копировать файлы, но, по крайней мере, теперь это работает.Обратите внимание, что вы не можете переместить AxInterop куда-либо еще и ссылаться на него вручную, так как он не работает.Спасибо @crunchy за предоставленную мне идею.

0 голосов
/ 23 марта 2012

У меня была такая же ошибка. Я понял, что дважды ссылаюсь на один и тот же .dll в двух разных местах.

Итак, все, что я сделал, это удалил все ссылки на .dll и добавил его снова из одного места.

Это решило ошибку.

...