1186 / 543 / 78
Регистрация: 01.07.2009
Сообщений: 3,517
1

Подключить библиотеку к проекту

05.07.2012, 18:59. Показов 17261. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Собрал я библиотеку классов с кодом
C#
1
2
3
4
5
6
7
8
9
10
11
12
using System;
 
namespace TestLib
{
    public class MathLib
    {
        public int Add(int x, int y)
        {
            return x + y;
        }
    }
}
Создал проект консольное приложение и добавил эту мою собранную библиотеку выбрав пункт добавить->"существующий элемент" в обозревателе решений. В проекте в обозревателе решений в пункте References(ссылки) она отображается, если кликнуть по ней то покажет что мол версия у неё 1 и что никакой информации о себе библиотека больше не даёт.

Как мне теперь собрать код с этой либой вместе? Вроде как и подключилась она (раз уж появилась в references) и вроде нет так как код где я упоминаю пространство имён с библиотеки среда не видит
C#
1
2
3
4
5
6
7
8
9
10
11
12
using System;
 
namespace Test
{
    public class TestClass
    {
        static void Main()
        {
            TestLib.MathLib obj = new TestLib.MathLib();//пространство имён TestLib не найдено
        }
    }
}
Если в либе просто создать класс (без пространства имён) и также подключить то всё равно объект не создать. Чего не хватает-то? В книге что я открыл написано что мол и так всё должно быть хорошо, но мне кажется что какой-то шаг там пропущен и нужно же дать как-то моему проекту знать о содержимом библиотеки ...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.07.2012, 18:59
Ответы с готовыми решениями:

Два способа подключить библиотеку к проекту: через references и DllImport - в чем отличие
Всем привет. Есть два способа подключить библиотеку к проекту: через references и DllImport, а в...

Как пришить проекту библиотеку классов
Нашел на МСДНе проект в виде библиотеки классов, под названием SharpGL, которая позволяет создавать...

Подключить JS код к проекту
Возможно ли это? Подключить JavaScript к проекту C# и писать на JavaScript. Не спрашивайте зачем,...

Как подключить DLL к проекту
Нужно подключить Dll к C# https://vk.codeplex.com/releases/view/122628 из исходников собрать не...

12
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378
05.07.2012, 20:02 2
Лучший ответ Сообщение было отмечено как решение

Решение

в своем консольном приложение в обозреватели решений на ссылки правой кнопкой... а вобщем смотри картинку внизу
Миниатюры
Подключить библиотеку к проекту  
3
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
05.03.2014, 20:22 3
Fourd, а как сделать что-бы при отсутствии библиотеки программа писала например "библиотека отсутствует" а не выдавала необработанное исключение?
0
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.03.2014, 20:56 4
qwertun, думаю можно в program.cs написать следующий код (до инициализации каких-либо форм):
C#
1
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler);
где MyHandler - это ваш обработчик с "библиотека отсутствует".

Добавлено через 4 минуты
Хотя судя по всему никак, если вы в проекте добавили, а обработать можно только если добавлять динамически. Если коротко - то это невозможно.
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
05.03.2014, 20:57 5
Цитата Сообщение от Psilon Посмотреть сообщение
обработать можно только если добавлять динамически
а вот тут можно по подробнее?
0
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.03.2014, 21:05 6
Сначала подгружаем dll
C#
1
Assembly assembly = Assembly.LoadFrom("dllPath");
Добавляем загруженную dll в домен
C#
1
AppDomain.CurrentDomain.Load(assembly.GetName());
теперь можно создавать объекты этого типа
C#
1
Type t = assembly.GetType("typeName");
но тут мы получим все взаимодействие через рефлексию, что очень костыльно.

Поведение по умолчанию - свалиться со словами "библиотеки нет" - самое правильное, поэтому я бы велосипед изобретать не стал. Но если надо - пожалуйста, вот способ. Но весь доступ ко всем полям, методам и пр будет только через рефлексию.

Добавлено через 2 минуты
Еще есть вариант извращаться через MEF. Но, как я уже сказал, адекватных вариантов нет в принципе.
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
05.03.2014, 21:07 7
Psilon, по-моему это какие-то извращения)

Добавлено через 1 минуту
Psilon, а например через [DllImport("ClassLibrary.dll")] это можно как-то сделать?
0
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
05.03.2014, 21:19 8
qwertun, не знаю, dllimport всегда используется только для неуправляемого кода на С/С++. Если и можно - толку не очень много, проще через рефлексию получить и не получать оверхед на PInvoke.
0
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378
06.03.2014, 23:44 9
а вы не пробовали использовать
{
try {
код подключения/вызова/демонстрации библиотеки }
catch {
вывод сообщения о том что не найдена/недоступна библиотека }
}

P.S: под рукой нету VS или другой раб.среды
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
06.03.2014, 23:46 10
пробовал, исключение про отсутствии библиотеки выскакивает при самом запуске программы (пошаговой отладкой проходил), оно даже не доходит то того места где я что-то из этой библиотеки достать пытаюсь.
0
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378
06.03.2014, 23:51 11
вы указываете ее в директивах( using dllname) ведь верно? а что если ее подгружать как указал Psilon и в случае, если не удалось подгрузить там и вывести сообщение?
0
11 / 11 / 1
Регистрация: 22.12.2012
Сообщений: 508
06.03.2014, 23:56 12
Цитата Сообщение от Fourd Посмотреть сообщение
вы указываете ее в директивах( using dllname) ведь верно?
именно так

Добавлено через 3 минуты
Цитата Сообщение от Fourd Посмотреть сообщение
а что если ее подгружать как указал Psilon и в случае, если не удалось подгрузить там и вывести сообщение?
если Вы про рефлексию, то всё отлично работает, просто это, как я уже писал, похоже на творение программистов-извращенцев :-)
0
98 / 98 / 46
Регистрация: 21.03.2012
Сообщений: 378
06.03.2014, 23:57 13
вот в соседней теме пишут как сделать импорт, не уверен конечно, но других мыслей нету, удачи
0
06.03.2014, 23:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.03.2014, 23:57
Помогаю со студенческими работами здесь

Как подключить файл.сs к проекту?
как подключить файл.сs к проекту? в файле описан класс. а проект должен демонстрировать работу...

Как подключить DLL к проекту
Написал курсовую и препод дал задание сделать DLL к проекту, все методы в отдельном классе, сделав...

Подключить все библиотеки к проекту
Здравствуйте! у меня в проекте используется EMGUCV. Как образом мне все библиотеки включить в EXE,...

Как подключить FXCop к свему проекту
Здравствуйте, я много слышал про FXCop, но как ее подключить? Сайт с книги...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru