Visual studio ссылка недействительна или не поддерживается
ссылка ". dll " не удалось добавить.Пожалуйста, убедитесь, что файл доступен и является допустимой сборкой или COM деталь.
ILDissassembler говорит, что нет допустимого заголовка CLR, поэтому я пытаюсь зарегистрировать его с помощью regsvr32, и это дает мне еще одну ошибку:
модуль "" был загружен, но вызов DLLRegisterServer не удалось код ошибки 0x80004005 при'
Я использую версию VS2010 ultimate на 64-битной машине Windows 7. В чем может быть проблема?
Спасибо за любые советы/ответы
для меня сработало следующее:
короткий ответ:
выполните следующие действия через командную строку (cmd):
и для вас будет создана допустимая dll.
более длинный ответ
Найти TlbImp.исполняемый. Вероятно, находится в C:\Program файлы (x86)\Microsoft SDKs\Windows\v7.0A\Bin. Если вы не можете найти его, перейдите в корневую папку (C:\ или D:) и беги:
запустить программу tlbimp.exe и поместите свою dll за него. Пример: если ваша dll является cvextern.файл DLL. Вы можете запустить:
regsvr32 также делает определенные предположения о структуре и экспортируемой функции в DLL. Прошло некоторое время с тех пор, как я использовал его, но это связано с регистрацией COM-серверов, поэтому определенные точки входа должны быть доступны. Если regsvr32 терпит неудачу, DLL не предоставляет эти точки входа, а DLL не содержит com-компонент.
Я использовал dependency walker для проверки внутренних ссылок, которые имела dll. Оказывается, он нуждался в среде выполнения VB msvbvm60.dll и так как мой dev box не установлен, я не смог зарегистрировать его с помощью regsvr32
Это, кажется, ответ на мой первоначальный вопрос сейчас.
убедитесь, что ваш компилятор установлен в x86, если вы пытаетесь ссылаться на x86 dll.
Я продолжал получать ошибки о том, что библиотека Access недоступна, но я знал, что загрузил ее.
во время отладки меня осенило, что я компилирую для 64 бит, но загрузил Office x86. Хотя я загрузил Доступ к библиотеке для 32 бит, он никогда не использовался приложением. и поэтому был недоступен.
"Поставщик=Microsoft.ТУЗ.Oledb для.12.0; источник данных= " + strFilePath +"; расширенные свойства='Excel 12.0 Xml; HDR=Yes'";
Как только я переключил компилятор для x86 он работал
Я просто столкнулся с этой проблемой, и после всех объяснений о ее исправлении с помощью командной строки я обнаружил, что если вы добавите ее непосредственно в проект, вы можете просто включить библиотеку на каждой странице, что это необходимо
У меня такая же проблема с импортом WinSCard.dll в моем проекте. Я имею дело с этим импортом непосредственно из dll, как это:
вы можете добавить это в отдельный проект, а затем добавить ссылку из своего основного проекта.
вы не можете добавить ссылку на уроженца DLL. Однако вы можете включить их в решение (щелкните правой кнопкой мыши решение, выберите "Добавить существующий файл"), но они не будут ссылаться, если вы не объявите что-то вроде
может быть, есть какой-то фантик DLL, на которую вы фактически ссылаетесь и которая содержит импорт DLL.
иногда вы можете ссылаться на DLL-оболочку, но все равно не можете запустить свою программу, где подсказка об ошибке предлагает вам убедиться, что файл существует и все зависимости доступны.
эта проблема заключается в том, что сборка, которую вы пытаетесь добавить, является целевой и компилируется только для x86 или х64 архитектура процессора.
просто попробуйте изменить целевую платформу на x86 или х64 на построить ->Configuration Manager.
для тех, кто ищет помощь по этому вопросу, или испытывает FileNotFoundException или FirstChanceException, проверьте мой ответ здесь:
В общем, вы должны быть абсолютно уверены, что вы отвечаете всем требованиям для создания ссылки - я знаю, что это очевидный ответ, но вы, вероятно, упускаете из виду относительно простое требование.
У меня была эта проблема после того, как мой компьютер был перезагружен во время построения решения. Мои две ссылки исчезли, поэтому мне пришлось перестроить два моих проекта вручную, а затем я мог добавить ссылки без ошибок.
У меня была эта ошибка при записи службы Windows. Я запускал Visual Studio как администратор, чтобы мои команды сборки post автоматически устанавливали мою службу. Я заметил, что когда я закрыл все и запустил VS нормально (не как администратор), это позволило мне добавить ссылки просто отлично без ошибок.
надеюсь, что это решение работает для вас.
обычно в Visual Studio 2015 вы должны создать проект dll как проект C++ -> CLR из шаблонов Visual Studio, но вы можете технически включить его после того, как факт:
критическое свойство называется Common Language Runtime Support в настройках Вашего проекта. Он найден под Configuration Properties > General > Common Language Runtime Support .
для примера я предлагаю создать новое решение в качестве проекта C++ CLR и изучить XML там, возможно, даже дифференцировать его, чтобы убедиться, что нет ничего очень важного, что выходит за рамки обычного.
Мне нужно было изменить архитектуру на x86 из x64 в configuration manager и скопировать мою 32 - битную dll (язык C-pcProxAPI.dll) в новую папку, созданную этим.. Это на верхних ступенях лестницы, описанный "Sashus" ниже.
мой ответ немного запоздал, но в качестве быстрого теста убедитесь, что вы используете последнюю версию библиотек.
в моем случае после обновления библиотеки nuget, которая ссылалась на другую библиотеку, вызывающую проблему, проблема исчезла.
у меня была та же проблема, когда я пытался добавить dll, которую я только что закодировал. Оказалось, мне нужно было установить свойства проекта, из которого моя dll:
- Configuration Properties\General\Common Language Runtime Support: /clr
- Configuration Properties\C/C++\General\Common Language RunTime Support: /clr
потому что проект, в котором я хотел использовать эту dll, также был установлен так (имел те же свойства, что и /clr ).
Скомпилированный код функции создает ссылку или вызов символа, но компоновщик не может найти определение символа в любой из библиотек или объектных файлов для связи.
Возможные причины
Существует множество способов получения этой ошибки. Все они используют ссылку на функцию или переменную, которую компоновщику не удалось Разрешить, или найти определение для. Компилятор может определить, когда символ не объявлен, но не может определить, не определенли символ. Это связано с тем, что определение может находиться в другом исходном файле или библиотеке. Если символ упоминается, но не определен, компоновщик создает неразрешенную extern ошибку символа Al.
Ниже приведены некоторые распространенные проблемы, вызывающие ошибку LNK2019.
Исходный файл, содержащий определение символа, не скомпилирован
в Visual Studio убедитесь, что исходный файл, определяющий символ, компилируется как часть проекта. Проверьте промежуточный каталог выходных данных сборки на наличие соответствующего OBJ-файла. если исходный файл не компилируется, щелкните его правой кнопкой мыши в Обозреватель решений и выберите пункт свойства , чтобы проверить свойства файла. На странице Свойства> конфигурацииОбщие должен отображаться тип элементакомпилятора C/C++. В командной строке убедитесь, что исходный файл, содержащий определение, скомпилирован.
Объектный файл или библиотека, содержащие определение символа, не связаны
в Visual Studio убедитесь, что объектный файл или библиотека, содержащие определение символа, связаны как часть проекта. В командной строке убедитесь, что список файлов для связывания содержит объектный файл или библиотеку.
Объявление символа написано не так, как определение символа
Проверьте правильность написания и регистра символов в объявлении и определении, а также в любом месте, где используется или вызывается символ.
Используется функция, но тип или число параметров не соответствуют определению функции
Объявление функции должно соответствовать определению. Убедитесь, что вызов функции соответствует объявлению и что объявление соответствует определению. Код, который вызывает функции шаблона, также должен иметь совпадающие объявления функции шаблона, включающие те же параметры шаблона, что и определение. Пример несоответствия объявления шаблона см. в разделе Sample LNK2019e. cpp статьи "примеры".
Функция или переменная объявлена, но не определена
Ошибка LNK2019 может возникать, если объявление существует в файле заголовка, но соответствующее определение не реализовано. Для функций элементов или static элементов данных реализация должна включать селектор области класса. Пример см. в разделе Missing Function Body or Variable.
Соглашение о вызовах отличается между объявлением функции и определением функции.
Соглашения о вызовах ( __cdecl , __stdcall , __fastcall или __vectorcall ) кодируются как часть декорированного имени. Убедитесь, что соглашение о вызовах одинаково.
Символ определен в файле C, но объявлен без использования extern "C" в файле C++
Символы, определенные в файле, который компилируется как C, имеют разные декорированные имена, чем символы, объявленные в файле C++, если не используется extern Модификатор "C" . Убедитесь, что объявление соответствует компоновке компиляции для каждого символа. Аналогично, если символ определяется в файле C++, который будет использоваться программой C, в определении следует использовать extern "C" .
Символ определяется как static , а затем на него указывает ссылка за пределами файла
В C++, в отличие от C, Глобальная const Ants имеет static компоновку. Чтобы обойти это ограничение, можно включить const инициализацию в файл заголовка и включить этот заголовок в cpp-файлы. Кроме того, можно сделать переменную const Ant и использовать const ссылку Ant для доступа к ней.
staticЧлен класса не определен
staticЧлен класса должен иметь уникальное определение или будет нарушать правило одного определения. staticЧлен класса, который не может быть определен как встроенный, должен быть определен в одном исходном файле с помощью его полного имени. Если он не определен вообще, компоновщик создает ошибку LNK2019.
Зависимость сборки определяется только в качестве зависимости проекта в решении
в более ранних версиях Visual Studio этот уровень зависимости был достаточным. однако начиная с Visual Studio 2010 Visual Studio требуется ссылка междупроектами. Если в проекте нет ссылки проекта на проект, может возникнуть Эта ошибка компоновщика. Чтобы устранить ошибку, добавьте ссылку одного проекта на другой.
Точка входа не определена
код приложения должен определять соответствующую точку входа: main или wmain для консольных приложений, а WinMain также wWinMain для Windows приложений. Дополнительные сведения см. в разделе main функция и аргументы командной строки или WinMain функция. Чтобы использовать настраиваемую точку входа, укажите параметр компоновщика /Entry (символ точки входа) .
построение консольного приложения с помощью параметров приложения Windows
Вы пытаетесь связать 64-разрядные библиотеки с 32-битным кодом или 32-bit Library в 64-разрядный код.
Библиотеки и объектные файлы, связанные с вашим кодом, должны быть скомпилированы для той же архитектуры, что и код. Убедитесь, что библиотеки, на которые ссылается проект, компилируются для той же архитектуры, что и проект. Убедитесь, что свойство /libpath или Дополнительные каталоги библиотек указывает на библиотеки, созданные для правильной архитектуры.
Для встраивания функций в разные исходные файлы используются различные параметры компилятора
Использование встроенных функций, определенных в CPP-файлах, и смешение в различных исходных файлах параметров компилятора для встраивания функций может привести к возникновению ошибки LNK2019. Для получения дополнительной информации см. Function Inlining Problems.
Автоматические переменные используются вне области действия
Автоматические переменные (области видимости функции) могут использоваться только в области видимости данной функции. Эти переменные не могут объявляться extern и использоваться в других исходных файлах. Пример см. в разделе Automatic (Function Scope) Variables.
Вы вызываете встроенные функции или передайте типы аргументов в встроенные функции, которые не поддерживаются в целевой архитектуре.
Например, если вы используете AVX2 встроенную функцию, но не указываете параметр компилятора / ARCH : AVX2 , компилятор предполагает, что встроенная функция является extern функцией Al. Вместо создания встроенной инструкции компилятор создает вызов extern символа Al с тем же именем, что и встроенная инструкция. Когда компоновщик пытается найти определение этой отсутствующей функции, он создает ошибку LNK2019. Убедитесь, что используются только встроенные функции и типы, поддерживаемые целевой архитектурой.
Вы занимаетесь смешением кода, который использует собственный wchar_t код с кодом, который не
действия по согласованности языка C++, выполненные в Visual Studio 2005, сделали wchar_t собственный тип по умолчанию. Если не все файлы были скомпилированы с использованием одних и тех же параметров /Zc: wchar_t , ссылки типа могут не разрешаться в совместимые типы. Убедитесь, что wchar_t типы во всех файлах библиотек и объектов совместимы. Либо обновите из wchar_t определения типа, либо используйте соответствующие параметры /Zc: wchar_t при компиляции.
Проблемы с библиотекой сторонних производителей и vcpkg
если вы видите эту ошибку при попытке настроить библиотеку стороннего производителя в рамках сборки, рассмотрите возможность использования vcpkg, диспетчера пакетов C++ для установки и сборки библиотеки. vcpkg поддерживает большой и растущей список библиотек сторонних производителей. Он задает все свойства конфигурации и зависимости, необходимые для успешной сборки в рамках проекта.
Средства диагностики
Иногда трудно определить, почему компоновщику не удается найти определенное определение символа. Часто проблема заключается в том, что в сборку не включен код, содержащий определение. Или же параметры сборки создали разные декорированные имена для extern символов Al. Существует несколько средств и параметров, которые могут помочь в диагностике ошибок LNK2019.
Параметр / VERBOSE Компоновщик может помочь определить, на какие файлы ссылается компоновщик. С помощью этого параметра можно проверить, включен ли в сборку файл, содержащий определение символа.
Параметры DUMPBIN/ EXPORTS и / SYMBOLS программы позволяют определить, какие символы определены в .dll и файлах объектов или библиотек. Убедитесь, что экспортированные декорированные имена соответствуют декорированным именам, которые ищет компоновщик.
UNDNAMEПрограмма может отобразить эквивалентный недекорированный extern символ Al для декорированного имени.
Примеры
Далее приводится несколько примеров кода, вызывающего ошибку LNK2019, а также сведения о том, как устранить ошибку.
Символ объявлен, но не определен
В этом примере переменная Al объявлена, extern но не определена:
Ниже приведен еще один пример, где переменная и функция объявляются как, extern но определение не предоставляется:
staticЭлемент данных объявлен, но не определен
Ошибка LNK2019 также может возникать, если static элемент данных объявлен, но не определен. В следующем примере показано возникновение ошибки LNK2019 и приводятся сведения по ее устранению.
Параметры объявления не соответствуют определению
Код, который вызывает функции шаблона, должен иметь совпадающие объявления функции шаблона. Объявления должны содержать те же параметры шаблона, что и определение. В следующем примере показано возникновение ошибки LNK2019 для определяемого пользователем оператора и приводятся сведения по ее устранению.
Непротиворечивые wchar_t определения типов
В этом примере создается библиотека DLL с экспортом WCHAR , который разрешается в wchar_t .
В следующем примере используется библиотека DLL из предыдущего примера и создается LNK2019, так как типы unsigned short* и WCHAR* не совпадают.
Чтобы устранить эту ошибку, измените unsigned short значение на wchar_t или WCHAR или скомпилируйте LNK2019g. cpp с помощью /Zc: wchar_t -.
Дополнительные ресурсы
Если ваше приложение пытается использовать неработающую ссылку, создается ошибка исключения. Неспособность найти компонент, на который указывает ссылка, является явным признаком ошибки, однако есть несколько ситуаций, в которых ссылка считается нерабочей. Эти варианты показаны в приведенном ниже списке:
Неверный или неполный путь для ссылок проекта.
Файл, на который указывает ссылка, удален.
Файл, на который указывает ссылка, переименован.
Сбой подключения к сети или проверки подлинности.
Ссылка указывает на COM-компонент, который не установлен на данном компьютере.
Ниже приведены способы устранения этих проблем.
Ссылки на файлы в сборках задаются по абсолютным путям в файле проекта. Таким образом, в локальном окружении пользователей, работающих с несколькими разработчиками, может отсутствовать сборка, на которую указывает ссылка. Чтобы избежать этих ошибок, в таких случаях лучше добавлять ссылки между проектами. Дополнительные сведения см. в разделе Программирование с использованием сборок.
Неправильный путь для ссылок
Если проекты используются совместно на разных компьютерах, некоторые ссылки могут быть не найдены, если компонент находится на этих компьютерах в разных папках. Ссылки сохраняются под именем файла компонента (например, MyComponent). Когда в проект добавляется ссылка, расположение папки для файла компонента (например, C:\MyComponents) добавляется к свойству проекта ReferencePath.
Чтобы устранить эту проблему, можно удалить неработающую ссылку и заменить в диалоговом окне Добавление ссылки. Другое решение заключается в том, чтобы использовать элемент Путь для ссылок на страницах свойств проекта и изменить папки в списке, указав правильное расположение. Свойство Путь для ссылок сохраняется для каждого пользователя на каждом компьютере. Таким образом, изменение пути для ссылок не затрагивает других пользователей проекта.
Ссылки между проектами лишены подобных проблем. Поэтому по мере возможности следует использовать их вместо ссылок на файлы.
Исправление неработающей ссылки проекта с помощью исправления пути для ссылок
В обозревателе решений щелкните правой кнопкой мыши узел проекта и выберите пункт Свойства.
Открывается конструктор проектов.
Если вы используете Visual Basic, выберите страницу Ссылки и нажмите кнопку Пути для ссылок. В диалоговом окне Пути для ссылок введите путь к папке с элементом, на который нужно сослаться, в поле Папка, а затем нажмите кнопку Добавить папку.
Файл, на который указывает ссылка, удален.
Вполне возможно, что файл, на который указывает ссылка, был удален и больше не существует на диске.
Исправление неработающей ссылки проекта для файла, который больше не существует на диске
Если ссылка находится в другом расположении на компьютере, считайте ее оттуда.
Файл, на который указывает ссылка, переименован.
Файл, на который указывает ссылка, мог быть переименован.
Исправление неработающей ссылки, указывающую на переименованный файл
Удалите ссылку, а затем добавьте ссылку на переименованный файл.
Если ссылка находится в другом расположении на компьютере, нужно считать ее оттуда.
Сбой подключения к сети или проверки подлинности
Недоступность файлов может быть вызвана несколькими возможными причинами, например ошибкой сетевого соединения или ошибкой проверки подлинности. В каждом отдельном случае могут использоваться уникальные средства восстановления. Например, вам может потребоваться обратиться к локальному администратору для получения доступа к необходимым ресурсам. Однако удаление ссылки и изменение использующего ее кода работает всегда.
На компьютере не установлен COM-компонент.
Диалоговое окно "Диспетчер ссылок"
В левой части диалогового окна "Диспетчер ссылок" отображаются различные категории в зависимости от типа проекта:
Сборки с подгруппами Платформа и Расширения.
COM содержит список всех COM-компонентов, ссылки на которые можно добавить.
Проекты
Общие проекты
Windows с подгруппами Ядро и Расширения. Для просмотра ссылок в Windows SDK и пакетах SDK расширений можно использовать Обозреватель объектов.
Обзор с подгруппой последних ссылок.
При разработке проектов С++ элемент Обзор может не отображаться в диалоговом окне "Диспетчер ссылок".
Добавление ссылки
В обозревателе решений щелкните правой кнопкой мыши узел Ссылки или Зависимости и выберите команду Добавить ссылку. Вы также можете щелкнуть узел проекта правой кнопкой мыши и выбрать пункт Добавить > Ссылка.
Будет открыт Диспетчер ссылок со списком доступных ссылок по группам.
Укажите ссылки, которые требуется добавить, а затем нажмите кнопку ОК.
В обозревателе решений щелкните правой кнопкой мыши узел Ссылки или Зависимости, после чего выберите Добавить ссылку на проект или Добавить общую ссылку на проект, или Добавить ссылку COM. (Можно щелкнуть правой кнопкой мыши узел проекта и выбрать пункт Добавить из всплывающего меню, чтобы выбрать эти параметры.)
Будет открыт Диспетчер ссылок со списком доступных ссылок по группам.
Укажите ссылки, которые требуется добавить, а затем нажмите кнопку ОК.
Вкладка "Сборки"
При добавлении вручную ссылки на любое из пространств имен EnvDTE (EnvDTE, EnvDTE80, EnvDTE90, EnvDTE90a или EnvDTE100) установите в окне Свойства для свойства ссылки Внедрить типы взаимодействия значение False. Задание для этого свойства значения True может привести к проблемам сборки, так как некоторые свойства EnvDTE не допускают внедрения.
Все проекты классических приложений содержат неявную ссылку на библиотеку mscorlib. Проекты Visual Basic содержат неявную ссылку на Microsoft.VisualBasic. Все проекты содержат неявную ссылку на System.Core, даже если она была удалена из списка ссылок.
Если тип проекта не поддерживает сборки, эта вкладка не отображается в диалоговом окне "Диспетчер ссылок".
Вкладка Сборки состоит из двух подразделов.
В разделе Платформа перечислены все сборки, из которых состоит целевая платформа.
- HKEY_CURRENT_USER\SOFTWARE\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
- HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
- HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\[Target Framework Identifier]\v[Target Framework Version]\AssemblyFoldersEx\[UserComponentName]\@default=[Disk location of assemblies]
Некоторые компоненты в списке могут не отображаться в зависимости от версии платформы проекта. Это может произойти в следующих случаях.
Компонент, использующий новую версию платформы, не совместим с проектом, нацеленным на более раннюю версию платформы.
Сведения об изменении целевой версии платформы для проекта см. в статье Общие сведения о настройке для платформы.
Не следует добавлять ссылки на выходные файлы другого проекта того же решения, поскольку это может привести к ошибкам компиляции. Вместо этого следует создавать ссылки между проектами, используя вкладку Проекты диалогового окна Добавление ссылки. Это позволит упростить коллективную разработку за счет более эффективного управления библиотеками классов, создаваемыми в проектах. Дополнительные сведения см. в статье Устранение неполадок неработающих ссылок.
Чтобы отобразить сборку в диалоговом окне "Добавление ссылки"
Переместите или скопируйте сборку в одно из следующих расположений.
Каталог текущего проекта. (Можно найти эти сборки, используя вкладку Обзор .)
Другие каталоги проектов в одном решении. (Можно найти эти сборки, используя вкладку Проекты.)
Установите раздел реестра, определяющий положение отображаемых сборок.
Для 32-разрядной операционной системы добавьте один из следующих разделов реестра.
Для 64-разрядной операционной системы добавьте один из следующих разделов реестра в 32-разрядный куст реестра.
является каталогом сборок, которые требуется отображать в диалоговом окне Добавить ссылку, например C:\MyAssemblies.
Создание раздела реестра в узле HKEY_LOCAL_MACHINE позволяет всем пользователям видеть сборки в указанном расположении в диалоговом окне Добавить ссылку. Создание раздела реестра в узле HKEY_CURRENT_USER влияет только на настройки для текущего пользователя.
Вкладка "Проекты"
На вкладке Проекты указываются все совместимые проекты в текущем решении (в подразделе Решение).
Вкладка "Общие проекты"
Добавьте ссылку на общий проект на вкладке Общие проекты диалогового окна "Диспетчер ссылок". Общие проекты позволяют писать общий код, на который ссылается несколько различных проектов приложений.
Вкладка "Универсальная платформа Windows"
Вкладка Универсальная платформа Windows содержит список всех пакетов SDK, относящихся к платформам, на которых работают операционные системы Windows. Эта вкладка имеет две подгруппы: Ядро и Расширения.
Подгруппа "Ядро"
Проекты универсального приложения для Windows по умолчанию имеют ссылку на пакет SDK универсальной платформы Windows. Соответственно, в подгруппе Ядро в диспетчере ссылок не перечисляются никакие сборки из пакета SDK универсальной платформы Windows.
Подгруппа "Расширения"
В разделе Расширения перечислены пользовательские пакеты SDK, расширяющие целевую платформу Windows.
Пакет SDK — это коллекция файлов, которая обрабатывается Visual Studio как единый компонент. На вкладке Расширения пакеты SDK, относящиеся к проекту, из которого было открыто диалоговое окно "Диспетчер ссылок", указываются как отдельные записи. При добавлении в проект все содержимое SDK используется Visual Studio таким образом, что пользователю не нужно принимать никаких дополнительных мер для добавления содержимого SDK в IntelliSense, на панель элементов, в конструкторы, обозреватель объектов, средства сборки, развертывания, отладки и упаковки.
Сведения об отображении SDK на вкладке Расширения см. в статье Создание средств разработки программного обеспечения.
Если проект ссылается на пакет SDK, зависящий от другого пакета SDK, Visual Studio не будет использовать второй пакет SDK, пока вы вручную не зададите ссылку на него. Когда пользователь выбирает пакет SDK на вкладке Расширения, открывается диалоговое окно "Диспетчер ссылок", которое помогает определить зависимости SDK, перечислив их в области сведений.
Если тип проекта не поддерживает расширения, эта вкладка не отображается в диалоговом окне "Диспетчер ссылок".
Вкладка COM
Если тип проекта не поддерживает COM, эта вкладка не отображается в диалоговом окне "Диспетчер ссылок".
Обзор
Кнопка Обзор позволяет осуществлять поиск компонента в файловой системе.
Не следует добавлять ссылки на выходные файлы другого проекта того же решения, поскольку это может привести к ошибкам компиляции. Вместо этого следует создавать ссылки между проектами, используя вкладку Решение диалогового окна "Диспетчер ссылок". Это позволит упростить коллективную разработку за счет более эффективного управления библиотеками классов, создаваемыми в проектах. Дополнительные сведения см. в статье Устранение неполадок неработающих ссылок.
Невозможно добавить SDK в проект с помощью кнопки "Обзор". С помощью кнопки "Обзор" можно добавить в проект только файл (например, сборку или файл WinMD).
При указании ссылки на файл WinMD предполагается, что файлы .winmd, .dll и .pri находятся рядом. При указании ссылки на файл WinMD в следующих сценариях неполный набор файлов копируется в выходной каталог проекта и, следовательно, происходят сбои сборки и выполнения.
Компонент на базе машинного кода. Проект на базе машинного кода создает по одному файлу WinMD для каждого не связанного с другими набора пространств имен и по одному файлу DLL с реализацией. Файлы WinMD будут иметь разнородные имена. При указании ссылки на такой файл компонента на базе машинного кода MSBuild не определит, что файлы WinMD с разнородными именами относятся к одному компоненту. Следовательно, будут скопированы только файлы .dll и .winmd с одинаковыми именами, и возникнет ошибка времени выполнения. Чтобы обойти эту проблему, нужно создать пакет SDK расширения. Дополнительные сведения см. в статье Создание средств разработки программного обеспечения.
Использование элементов управления. Элемент управления XAML состоит по крайней мере из следующих файлов: .winmd, .dll, .pri, .xaml и .jpg. Когда проект будет собран, файлы ресурсов, связанные со ссылкой на файл, не будут скопированы в выходной каталог проекта, а будут скопированы только файлы .winmd, .dll и .pri. При этом в журнал будет занесена ошибка сборки, указывающая пользователю на отсутствующие ресурсы .xaml и .jpg. Чтобы сборка прошла успешно, пользователь должен вручную скопировать эти файлы ресурсов в выходную папку проекта для сборки и отладки (выполнения). Для решения этой проблемы создайте пакет SDK расширения, следуя инструкциям в статье Создание средств разработки программного обеспечения, или измените файл проекта, добавив в него следующее свойство:
При добавлении этого свойства сборка может выполняться медленнее.
Последние
Элементы Сборки, COM, Windows и Обзор поддерживают вкладку Последние, содержащую список компонентов, которые были недавно добавлены в проекты.
Поиск
Панель поиска в диалоговом окне "Диспетчер ссылок" работает с текущей активной вкладкой. Например, если пользователь вводит в области поиска запрос "System", когда открыта вкладка Решение, поиск не вернет результаты, если решение не содержит проекта, в имени которого есть слово "System".
ранее я задавал аналогичный вопрос относительно Visual Studio 2013, но теперь я сталкиваюсь с той же проблемой с Visual Studio 2015, но, похоже, она работает по-другому, что делает предыдущий ответ неприменимым к этому вопросу. Это мой предыдущий вопрос: Visual Studio 2013 - как отладить проект в решении
Я пытаюсь добавить ссылку на проект. У меня есть библиотека, над которой я работаю в отдельном решении / проекте и консоли приложение я хочу использовать для тестирования и отладки библиотеки.
Я пробовал: добавить ссылку > проекты > решение > обзор
но диалоговое окно открыть файл не содержит .sln-файлы в списке фильтров, и если я заставлю его отображать их, набрав *.sln, а затем выберите решение, которое я получаю:
" пожалуйста, убедитесь, что файл доступен и что это допустимая сборка или COM-компонент."
Что я делаю не так? Как правильно добавить решение / проект ссылка?
щелкните правой кнопкой мыши на файл решения в окне Solution Explorer щелкните добавить и выберите существующий проект.
Как только проект станет частью решения, вы сможете добавить ссылку на проект.
Проверьте, совпадает ли целевая платформа для вашего проекта и ссылки на проект, которую вы пытаетесь добавить ссылку.
(щелкните правой кнопкой мыши на project - > properties - > Application Tab (Target frame work))
в случае, если кто-то еще столкнется с этим, вот что я нашел. У меня была почти такая же проблема в VS 2015. Я создал консольное приложение, а затем проект библиотеки классов, но не смог добавить ссылку на библиотеку классов.
оказывается, я не создал проект библиотеки классов, как я думал, а скорее проект библиотеки классов (пакета). Это разные вещи, и я не знал, что означает часть (пакет), когда я ее выбрал. Это для создания NuGet для очевидно, посылки.
Читайте также: