Как добавить ссылку на проект с visual studio
Перейти к содержимому

Как добавить ссылку на проект с visual studio

  • автор:

Как добавить ссылки на сборки в Visual Studio Code?

Итак, я столкнулся с подобной проблемой дважды, работая над своим первым проектом на С#. При попытке добавить либо using System.Data; , либо using System.Timers; , я получаю сообщение об ошибке The type or namespace name ‘x’ doesn’t exist in the namespace ‘System’ (are you missing an assembly reference?).

Я попытался начать новый проект и запустить восстановление, чтобы убедиться, что я случайно удалил что-то в зависимостях, но после создания нового проекта я все равно получаю ту же ошибку. Я попытался исследовать этот вопрос и увидел ответы со ссылкой на «explorer», но, насколько я вижу, в Visual Studio Code 1.8 это не похоже на такую ​​функцию.

Может ли кто-нибудь указать мне в правильном направлении, как заставить эти рабочие, возможно, вручную добавить в зависимости?

Как добавить ссылку на проект с visual studio

В references появляется этот проект. Проект не билдится, т.к. IDE не видит DLL для используемого в коде класса (видимо так). Если сделать AddReference на DLL – всё ок, билдится.
Что делаю не так? Нужно указать ссылку именно на проект, а не DLL.

Не могу добавить ссылку
Не могу добавить ссылку на офис, пишет такое. А саму ссылку Microsoft.Office.Core я не найду. Что.

Добавить защищенный паролем проект
Возможно ли добавить в солюшен защищенный паролем проект? чтобы исходные коды некоторых проектов.

Добавить существующий проект в TFS
После переустановки винды открываю проект, т.к рабочую область VS не находит он открывает как.

Не могу добавить новый item в проект
С какого-то времени не могу добавить новый item в проект. Всегда появляется сообщение: The.

На (папке) солюшена (решение) (Right click)-> Project dependencies. -> в выпадающем списке выбрать нужный проект, поставить галки.

На (папке) солюшена (решение) (Right click) -> Project Build Order. посмотреть все ли хорошо

Сообщение от olegall

Сообщение от olegall

При добавлении ссылки на dll предполагается, что у вас уже имеется скомпилированная сборка.
При добавлении проекта студия будет перестраивать этот проект при перестройке других проектов, которые от него зависят.

Поэтому и предлагаю проверить проект-зависимость на ошибки компиляции: если он не был откомпилирован из-за них, то зависимый проект тоже не сможет быть откомпилирован, т.к. не будет найдена зависимая сборка, которая не была сгенерирована из-за ошибок компиляции.

Быстрое добавление ссылок или «прощай Add Reference»

Недавно я допилил одну проблему, которая меня уже очень давно достает. Суть ее в том, что диалог Add Reference в Visual Studio не нужен, если вы берете сборку из одного из тех мест, где их ищет студия. Не нужен он потому, что студия вполне могла бы сама проиндексировать все пространства имен в этих сборках и при написании using Biztalk дать мне возможность добавить ссылку автоматически. Поскольку студия это делать не умеет, пришлось ей помочь.

Идея сама по себе простая, и состоит из 2 х частей, а именно:

  • Нужно найти все важные сборки и проиндексировать все их пространства имен.
  • При наведении курсора на using , нужно сделать поиск всех возможных сборок и показать меню.
Индексирование

База для пространств имен и путям к файлам сборок делается за секунды. Единственный трюк – это использование Cecil вместо извращений вроде Assembly.ReflectionOnlyLoad() , которые пытаются подгрузить зависимости и ещё невесть что. Быстренько находим все типы, записываем их простнанства имен в HashSet , и засовываем все это в базу. Как? Об этом сейчас и поговорим.

Во-первых, пути к файлам которые использует Add Reference находятся как минимум в 2 х местах – в реестре, и в папке PublicAssemblies. Чтобы найти те папки, которые указаны в реестре, я написал следующий код:

Изначально у меня мало что работало, т.к. ключи на 32-битной и 64-битной системе разные. В очередной раз замечаю что с переходом на 64-битную систему начал писать более качественный код ��

Чтобы найти папку PublicAssemblies, нужно сначала найти где установлена Visual Studio:

Имея список папок, можно в каждой искать все DLL-файлы и индексировать их. Помимо тех папок что всегда фигурируют в диалоге Add Reference, можно добавлять свои папки, что бывает удобно.

Добавление происходит с помощью метода AddNamespacesFromFile() который, как я уже писал, использует Mono.Cecil.

С наполнением базы на этом все. Далее можно пользоваться результатами, хотя я помимо этого сделал фоновую утилиту которая позволяет освежать данные и добавлять новые пути.

Использование

Не имея лучших вариантов, я реализовал добавление ссылок как context action для ReSharper. Идея простая – пользователь наводит курсор на слово Biztalk в строке using Biztalk; и видит магическое меню, при выборе элементов которого автоматически добавляется ссылка в проект.

Сам СА наследует от полезного класса CSharpContextActionBase , внутри которого кроме проверки а «применимость» ничего умного не происходит. Поиск по базе ведется с помощью простой выборки в стиле SELECT * from Namespaces where NamespaceName LIKE ‘%BizTalk%’ . Для базы в которой у вас будет пара тысяч элементов (ну, может 10 тысяч, если постараетесь), такой подход адекватен.

Все интересное происходит в BulbItem ах, то есть желтых лампочках которые появляются в процессе вызова контекстного меню. Сама лампочка – это некий POCO который умеет в нужный момент добавить ссылку на определенную сборку.

Код выше удалось написать только с помощью члена команды JetBrains (planerist – спасибо!), т.к. у меня у самого не хватило усидчивости чтобы найти правильный способ.

Свойства проекта: разделы References и Resources в Visual Studio

XYZ School

Закладка References (только для языка Visual Basic)

Закладка References позволяет разработчику ссылаться на классы, принадлежащие к другим .NET-сборкам, проектам или библиотекам DLL. Как только проект или библиотека DLL добавлены в список ссылок, класс становится доступен либо по своему полному имени, включающему пространство имен, либо просто по имени, если пространство имен импортировано в исходный файл. На рисунке ниже показана закладка References для проекта, ссылающегося на множество сборок:

Закладка References среды Visual Studio

Одной из особенностей этой закладки, предназначенной для разработчиков программ на языке Visual Basic, является кнопка Unused References, позволяющая выполнять поиск ссылок, которые можно удалить. Кроме того, можно добавлять пути к ссылкам (reference path), что дает возможность включать все сборки, расположенные в данном месте.

Как только сборка добавлена в список ссылок, любой открытый класс, содержащийся в этой сборке, становится видимым в проекте. Если класс вложен в пространство имен (которое может быть вложенной иерархией), то для ссылки на класс необходимо указывать его полное имя. В языках Visual Basic и C# предусмотрен механизм импортирования пространств имен, чтобы на классы можно было ссылаться непосредственно. Раздел References позволяет осуществлять глобальный импорт пространств имен для классов, принадлежащих проекту, без явного импорта в файл класса.

Ссылки на внешние сборки могут быть ссылками на файл или проект. Ссылка на файл — это прямая ссылка на отдельную сборку. Такие ссылки создаются с помощью закладки Browse в диалоговом окне Add Reference. Ссылка на проект — это ссылка на отдельный проект в решении. Все сборки, создающиеся проектом, динамически добавляются как ссылки. Ссылки на проекты создаются с помощью закладки Project в диалоговом окне Add Reference.

Преимущество ссылки на проект заключается в том, что она создает зависимость между проектами в системе сборки. Зависимый проект может быть собран заново, если он был изменен с момента последней сборки проекта, который на него ссылается. Ссылка на файл не создает зависимости между сборками, поэтому возможна ситуация, когда проект, ссылающийся на файл, будет собран, а зависимый проект — нет. Однако это может создать проблемы в ссылающемся проекте, который ожидает другую версию зависимого проекта.

Закладка Resources

Ресурсы проекта можно добавлять и удалять с помощью закладки Resources, показанной на рисунке ниже. В приведенном примере в приложение были добавлены две пиктограммы. Ресурсами могут быть изображения, текст, файлы и другие сериализуемые классы.

Закладка Resources среды Visual Studio

Этот интерфейс существенно облегчает работу с файлами ресурсов во время проектирования.

Как добавить ссылку на проект C ++ в Visual Studio?

В C # довольно просто добавить ссылку на проект, который будет строить зависимость, поместить полученную сборку в исходный каталог Debug / и правильно скомпилировать ее.

Итак, на данный момент у меня есть проект с Main () и проект статической библиотеки в одном решении. Однако, когда я компилирую проект Main () и смотрю в каталог bin / Debug /, я не нахожу ни файла Static.lib, ни файлов .obj, которые, я думаю, должны быть там, или что-то еще .. Я получаю ошибки компоновщика.

Я думаю, что, возможно, мне нужно настроить проект, чтобы найти файлы .obj и .lib, созданные проектом статической библиотеки (который прекрасно компилируется и фактически создает эти файлы).

Я что-то упустил, и я не очень хорошо разбираюсь в Visual Studio с C ++.

Как добавить ссылку в основной проект, чтобы использовать библиотеку, созданную проектом статической библиотеки?

Решение

Первое, что вам нужно понять, это то, что статические библиотеки не похожи на сборки .NET. Они связаны в .exe и не распространяются как отдельный объект.

Ваши ошибки компоновщика, скорее всего, являются результатом того, что вы не ссылаетесь на библиотеку.

Есть несколько способов определить библиотеки, которые должны быть связаны.
Один из них — это настройки проекта в компоновщик -> ввод -> дополнительные зависимости,
другой будет дешевый маршрут через #pragma comment(lib, «path to library»)

Другие решения

Вы можете добавить имя .lib-файлов, которые вам нужны, перейдя в свойства проекта-> Linker-> Input-> Additional Dependencies

Затем вам нужно будет указать папку, в которой находится ваша библиотека, в директориях VC ++ -> Директории библиотек.

В нем описываются параметры компоновщика, а также другие важные сведения о ссылках на другой проект C ++. (особенно если вы пришли из C #, но не слишком разбираетесь в C ++)

Быстрое добавление ссылок или «прощай Add Reference»

Недавно я допилил одну проблему, которая меня уже очень давно достает. Суть ее в том, что диалог Add Reference в Visual Studio не нужен, если вы берете сборку из одного из тех мест, где их ищет студия. Не нужен он потому, что студия вполне могла бы сама проиндексировать все пространства имен в этих сборках и при написании using Biztalk дать мне возможность добавить ссылку автоматически. Поскольку студия это делать не умеет, пришлось ей помочь.

Идея сама по себе простая, и состоит из 2 х частей, а именно:

  • Нужно найти все важные сборки и проиндексировать все их пространства имен.
  • При наведении курсора на using , нужно сделать поиск всех возможных сборок и показать меню.

Индексирование

База для пространств имен и путям к файлам сборок делается за секунды. Единственный трюк – это использование Cecil вместо извращений вроде Assembly.ReflectionOnlyLoad() , которые пытаются подгрузить зависимости и ещё невесть что. Быстренько находим все типы, записываем их простнанства имен в HashSet , и засовываем все это в базу. Как? Об этом сейчас и поговорим.

Во-первых, пути к файлам которые использует Add Reference находятся как минимум в 2 х местах – в реестре, и в папке PublicAssemblies. Чтобы найти те папки, которые указаны в реестре, я написал следующий код:

Изначально у меня мало что работало, т.к. ключи на 32-битной и 64-битной системе разные. В очередной раз замечаю что с переходом на 64-битную систему начал писать более качественный код 🙂

Чтобы найти папку PublicAssemblies, нужно сначала найти где установлена Visual Studio:

Имея список папок, можно в каждой искать все DLL-файлы и индексировать их. Помимо тех папок что всегда фигурируют в диалоге Add Reference, можно добавлять свои папки, что бывает удобно.

Добавление происходит с помощью метода AddNamespacesFromFile() который, как я уже писал, использует Mono.Cecil.

С наполнением базы на этом все. Далее можно пользоваться результатами, хотя я помимо этого сделал фоновую утилиту которая позволяет освежать данные и добавлять новые пути.

Использование

Не имея лучших вариантов, я реализовал добавление ссылок как context action для ReSharper. Идея простая – пользователь наводит курсор на слово Biztalk в строке using Biztalk; и видит магическое меню, при выборе элементов которого автоматически добавляется ссылка в проект.

Сам СА наследует от полезного класса CSharpContextActionBase , внутри которого кроме проверки а «применимость» ничего умного не происходит. Поиск по базе ведется с помощью простой выборки в стиле SELECT * from Namespaces where NamespaceName LIKE ‘%BizTalk%’ . Для базы в которой у вас будет пара тысяч элементов (ну, может 10 тысяч, если постараетесь), такой подход адекватен.

Все интересное происходит в BulbItem ах, то есть желтых лампочках которые появляются в процессе вызова контекстного меню. Сама лампочка – это некий POCO который умеет в нужный момент добавить ссылку на определенную сборку.

Код выше удалось написать только с помощью члена команды JetBrains (planerist – спасибо!), т.к. у меня у самого не хватило усидчивости чтобы найти правильный способ.

Как добавить ссылку на проект C++ в Visual Studio?

В C# довольно просто добавить ссылку на проект, которая создаст зависимость, поместить полученную сборку в исходный каталог Debug/ и правильно скомпилировать эту сборку.

Итак, на данный момент у меня есть проект с Main() и проект статической библиотеки в одном решении. Однако, когда я компилирую проект Main() и просматриваю каталог bin/Debug/, я не нахожу ни файла Static.lib, ни файлов .obj, которые, я думаю, должны быть там, или что-то в этом роде. , Я получаю ошибки компоновщика.

Я думаю, может быть, мне нужно настроить проект, чтобы найти файлы .obj и .lib, созданные проектом статической библиотеки (который отлично компилируется и фактически создает эти файлы).

Я что-то упустил, и я не очень хорошо разбираюсь в Visual Studio с C++.

Как добавить ссылку в основной проект, чтобы использовать библиотеку, созданную проектом статической библиотеки?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *