Visual Studio не может загрузить библиотеку x64 и нарушает intellisense - PullRequest
2 голосов
/ 07 января 2010

Visual Studio 2008 пытается загрузить библиотеки, и у меня есть только x64. Я получаю обычное сообщение о неправильном формате, потому что VS2008 является 32-битным. В качестве ASP.NET MVC проекта это означает отсутствие смысла в представлениях. Есть ли способ это исправить? Это не очень важно, если эта библиотека вообще не загружается для целей intellisense.

Ответы [ 4 ]

1 голос
/ 31 января 2010

Получите 32-битную и 64-битную версии DLL.
Если они недоступны, обратитесь к поставщику или, если библиотека с открытым исходным кодом, скомпилируйте их обе.

ПРИМЕЧАНИЕ. Если вы сами их компилируете, убедитесь, что они строго подписаны. При необходимости создайте свои собственные ключи.

Затем добавьте обе версии DLL в GAC.

Перезагрузите VS. Возможно, перезагрузите компьютер или выключите его и обойдите вокруг блока.

Это сработало для меня.

0 голосов
/ 24 января 2010

Просто посмотрите здесь , чтобы увидеть это ... Был кто-то, кто пытался загрузить dll x64bit под vs2008 и у вас была похожая ситуация, с которой вы столкнулись ... возможно, вам нужен распространяемый пакет x64 для среды выполнения VC ++?

Надеюсь, это поможет и удачи, С наилучшими пожеланиями, Том.

0 голосов
/ 29 января 2010

Я все время делаю x64 и 32-битную разработку под VS.NET 2008. Программа очень способна загружать x64 DLL, но я подозреваю, что у вас есть проект Win32, поэтому вы не можете загрузить в него Win64 DLL. Вы должны выбрать 64-битную или 32-битную, вы не можете смешивать их в данный момент, я понимаю.

0 голосов
/ 24 января 2010

Я подозреваю, что проблема не в том, что это x64, потому что IntelliSense всегда отлично работал для меня в приложении Console, даже при обращении к сборкам только для x64. Visual Studio на самом деле не нужно запускать сборки для получения данных IntelliSense - ей нужно только проверить ее с помощью Reflection. Вы можете убедиться в этом сами, если попытаетесь запустить 32-разрядный EXE-файл, который выполняет следующие действия:

string dllPath = "<path to 64-bit DLL";
System.Reflection.Assembly.ReflectionOnlyLoadFrom(dllPath); // Success
System.Reflection.Assembly.LoadFrom(dllPath); // BadImageFormatException

Скорее всего, это просто проблема с загрузкой ASP.NET IntelliSense любых сборок. По моему опыту, IntelliSense в ASP.NET очень темпераментный, когда дело доходит до сборок, на которые есть ссылки, - и в поиске ТАК я вижу, что я не единственный. Иногда я заставляю его работать, но это больше vodoo, чем наука. Вы можете попробовать такие вещи, как:

  • Закройте все открытые файлы ASP, очистите решение, перестройте.
  • Удалите сборку, на которую есть ссылки, очистите раствор и снова добавьте его
  • Ссылка на внешние элементы управления в Web.config вместо внутренних страниц.
  • Поиск сообщений о проблемах ASP.NET IntelliSense на форумах SO и MSDN, чтобы узнать, что еще придумали люди
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...