Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для CoMMoN86
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
.NET 3.x

Как работать с самописной DLL

14.02.2015, 15:04. Показов 1403. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем времени суток, пытаюсь перевести один код в библиотеку, вроде бы все норм, но в самой проге я не знаю как с ней работать
вот код библиотеки
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Xml.Serialization;
 
namespace Update
{
    public class DCUpdate
    {
        UpdateVersion uv = null;
        public static string appVersion = "2.4";
 
        public static void GetNewVersion()
        {
            //тестовый файл на моем блоге
            string sUrl = "http://common.mirmastera.ru/soft/update/LicenseGenerator/update.xml";
            //потоки для чтения
            Stream st = null;
            StreamReader sr = null;
            //логин и пароль, если требуется установка авторизации на прокси сервере
            string username = null, password = null;
 
            try
            {
                //подготавливаем запрос
                WebRequest req = WebRequest.Create(sUrl);
                //т.к. в данном примере логин и пароль пустые, ничего не заносим
                if (username != null && password != null)
                    req.Credentials = new NetworkCredential(username, password);
 
                //пытаемся получить файл
                WebResponse resp = req.GetResponse();
 
                //подключаемся к потоку
                st = resp.GetResponseStream();
                //читаем поток.. не забываем про кодировку
                sr = new StreamReader(st, Encoding.Default);
 
                //готовимся к сериализации. Задаем наш тип объекта UpdateVersion
                XmlSerializer xml = new XmlSerializer(typeof(UpdateVersion));
                //проводим десериализацию
                UpdateVersion uv = (UpdateVersion)xml.Deserialize(sr);
                if (uv.version != appVersion)
                {
                    //если все прошло успешно, то в объекте uv будут храниться все значения
                    //спрашиваем у пользователя что делать дальше
                   // if (uv.version)
                   // {
                        try
                        {
                            //пытаемся перейти по ссылке открыв браузер
                            //Process.Start(uv.url);
                            Console.WriteLine("Вышла новая версия программы DenwerClient: " + uv.version + "\nЧто нового:\n" + uv.whatnew + "\nСкачать новую версию?");
                            Console.ReadLine();
                            //###############################################################
                            /*Form formUpd = new Update(this.uv.version, uv.url);
                            formUpd.Show();*/
                            //###############################################################
                        }
                        catch { }
                   // }
 
                }
            }
            catch
            {
                return;
            }
            finally
            {
                //закрываем все потоки
                if (sr != null)
                    sr.Close();
 
                if (st != null)
                    st.Close();
            }
        }
 
 
 
 
 
        //класс для сериализации
        public class UpdateVersion
        {
            public string version; //версия программы
            public string whatnew; //что нового в программе
            public string url; //путь к программе     
        }
 
 
    }
 
 
}
Вызываю так
C#
1
Update upd = new Update();
задача такая библиотека проверяет наличие новой версии и если есть новая то она дает команду на то чтобы появилась кнопка обновить, но я запуался , в библиотеке знаю середина (вывод) не верный
Помогите люди добрые.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.02.2015, 15:04
Ответы с готовыми решениями:

Какими средствами добавлять, изменять и выводить данные из самописной DLL
Здравствуйте! Создал библиотеку с методами. Подскажите мануал или какими средствами, добавлять, изменять и выводить данные из нее.

Как работать с Dll библиотеками
объясните простым языком как ими пользоваться. Пишу на диплом крупную программу и думаю что одним файлом exe не обойтись

Как работать с библиотекой Graph2Dlib.dll
Добрый день если кто пользовался библиотекой для построения графиков Graph2Dlib.dll, объясните как ей пользоваться. Если есть аналоги...

13
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
14.02.2015, 15:19
Цитата Сообщение от CoMMoN86 Посмотреть сообщение
но в самой проге я не знаю как с ней работать
проект > добавить ссылку, выбираем нашу dll
0
 Аватар для CoMMoN86
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
14.02.2015, 20:26  [ТС]
Metall_Version, Прочтите еще раз, как подключить я знаю
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
14.02.2015, 21:28
CoMMoN86, прочитал, единственный вопрос который есть в посте -
Цитата Сообщение от CoMMoN86 Посмотреть сообщение
но в самой проге я не знаю как с ней работать
вот код библиотеки
вот я на него и ответил.

если вопрос как использовать эту библу, то это вопрос к тому кто ее писал, если вы писали то вопрос странный

конкретизируйте с чем трудности
0
 Аватар для CoMMoN86
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
14.02.2015, 21:55  [ТС]
Metall_Version, трудность в том, что я ее писал в самой проге т.е там все работало, но я хотел уже научиться работать и писать библиотеки для программ своих, перенес этот код в библиотеку вроде все сделал, но столкнулся как мне теперь к ней обратиться и использовать например мне нужно будет взять из библиотеке true чтобы активировать кнопку для обновления
0
71 / 62 / 33
Регистрация: 03.09.2013
Сообщений: 306
14.02.2015, 22:16
CoMMoN86,
Update upd = new Update();
Это не правильно, у вас методы статичные они вызываются
Update.DCUpdate.GetNewVersion();
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
14.02.2015, 22:16
CoMMoN86, выложите тогда эталон как с ней нужно работать, то есть тот код где вы это использовали в коде без сборки
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
14.02.2015, 23:32
Цитата Сообщение от CoMMoN86 Посмотреть сообщение
мне теперь к ней обратиться и использовать
Допустим у вас в обозревателе решений два проекта.
Один - библиотека(Update), второй ваша форма WindowsFormsApplication.
Правой кнопкой кликаете по WindowsFormsApplication и затем добавить ссылку.
Добавляете ссылку на Update.

Затем в форме пишете using Update;
Все. Можете пользоваться.

Если dll у вас храниться на стороне, то также.
Кликаете по WindowsFormsApplication. Добавить ссылку. Обзор.
Находите ваш dll (Update.dll) и добавляете.

На форме также пишете using Update;
0
 Аватар для CoMMoN86
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
15.02.2015, 09:56  [ТС]
Евгений В, Это я все сделал, мне нужно достать от библиотеке цифру новой версии и уже в винформе в самой проге нечто что то похожее
C#
1
2
3
4
if (uv.version != appVersion)
                {
// идф идф сщв
}
ну и всю нужную инфу конечно же.

Добавлено через 47 секунд
Metall_Version, эталон?! смысле? этот код и есть такой

Добавлено через 29 секунд
Driwars, спс попробую щас

Добавлено через 57 минут
Примерно это должно выглядеть так
C#
1
2
3
4
5
DCUpdate.GetNewVersion();
            if (DCUpdate.GetNewVersion() == true)//это ошибка т.к мметод void не может быть bool
            {
            refreshToolStripMenuItem.Enabled = true;
            }
С библиотеке мне нужно достать урл, новую версию и текст что нового
Как это сделать?
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
15.02.2015, 12:13
библа написано со многими ошибками. метод бессмыслен ибо ничего не возвращает и ничего не изменяет

хотябы вот так изменить
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
    public class DCUpdate
    {
        public static UpdateVersion uv = null;
        public static string appVersion = "2.4";
 
        public static void GetNewVersion()
        {
            //тестовый файл на моем блоге
            string sUrl = "http://common.mirmastera.ru/soft/update/LicenseGenerator/update.xml";
            //потоки для чтения
            Stream st = null;
            StreamReader sr = null;
            //логин и пароль, если требуется установка авторизации на прокси сервере
            string username = null, password = null;
 
            try
            {
                //подготавливаем запрос
                WebRequest req = WebRequest.Create(sUrl);
                //т.к. в данном примере логин и пароль пустые, ничего не заносим
                if (username != null && password != null)
                    req.Credentials = new NetworkCredential(username, password);
 
                //пытаемся получить файл
                WebResponse resp = req.GetResponse();
 
                //подключаемся к потоку
                st = resp.GetResponseStream();
                //читаем поток.. не забываем про кодировку
                sr = new StreamReader(st, Encoding.Default);
 
                //готовимся к сериализации. Задаем наш тип объекта UpdateVersion
                XmlSerializer xml = new XmlSerializer(typeof(UpdateVersion));
                //проводим десериализацию
                uv = (UpdateVersion)xml.Deserialize(sr);
                if (uv.version != appVersion)
                {
                    //если все прошло успешно, то в объекте uv будут храниться все значения
                    //спрашиваем у пользователя что делать дальше
                   // if (uv.version)
                   // {
                        try
                        {
                            //пытаемся перейти по ссылке открыв браузер
                            //Process.Start(uv.url);
                            Console.WriteLine("Вышла новая версия программы DenwerClient: " + uv.version + "\nЧто нового:\n" + uv.whatnew + "\nСкачать новую версию?");
                            Console.ReadLine();
                            //###############################################################
                            /*Form formUpd = new Update(this.uv.version, uv.url);
                            formUpd.Show();*/
                            //###############################################################
                        }
                        catch { }
                   // }
 
                }
            }
            catch
            {
                return;
            }
            finally
            {
                //закрываем все потоки
                if (sr != null)
                    sr.Close();
 
                if (st != null)
                    st.Close();
            }
        }
 
  
        //класс для сериализации
        public class UpdateVersion
        {
            public string version; //версия программы
            public string whatnew; //что нового в программе
            public string url; //путь к программе       
        }


использовать так

C#
1
2
DCUpdate.GetNewVersion();
UpdateVersion uv = DCUpdate.uv;
тут в uv все что нужно
1
 Аватар для CoMMoN86
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
15.02.2015, 13:19  [ТС]
Metall_Version, Ошибка
Ошибка 1 Имя типа "UpdateVersion" отсутствует в типе "DenwerClient.Update" D:\Project\Visual Studio\DenwerClient\DenwerClient\Form1.c s 94 20 DenwerClient
В
C#
1
Update.[COLOR="Red"]UpdateVersion[/COLOR] uv = DCUpdate.uv;
Типа он мож не статический?
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
15.02.2015, 13:30
Цитата Сообщение от CoMMoN86 Посмотреть сообщение
Типа он мож не статический?
класс UpdateVersion в сборке должен быть public,
0
 Аватар для CoMMoN86
-5 / 5 / 1
Регистрация: 18.05.2013
Сообщений: 503
15.02.2015, 13:38  [ТС]
Metall_Version, ну вроде все норм, а ругается на него, может как то по другому вызвать нужно?
0
 Аватар для Metall_Version
2152 / 1289 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
15.02.2015, 14:48
CoMMoN86, не должно ругатся, выложи проект гляну

Добавлено через 38 минут
CoMMoN86, проблема была в зависимостях построения проекта, сперва строим нашу библиотеку а потом само приложение, и главное что класс UpdateVersion был вложенным в DCUpdate, так что либо соответственно к нему нужно было обращаться, или сделать не вложенным (что я и сделал, ссылку кинул в ЛС)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.02.2015, 14:48
Помогаю со студенческими работами здесь

Подключение сторонней DLL. Нужно, чтобы программа могла работать с разными версиями dll
Есть dll с неким драйвером для фискального регистратора. Требуется прицепить ее к программе на C#. Проблема в том, что эти драйвера...

Прикрутил dll на с++, но не могу работать с данными
Кароч, народ. Прикрутил я шарпу dll на с++. Исходников dll нет, ибо это API оборудования. Хочу сделать управление оборудованием через шарп....

Как притулить метод на выполнение с DLL , без ошибочного завершения как DLL не будет c EXE
Как притулить метод на выполнение с DLL , без ошибочного завершения как DLL не будет c EXE using System; using...

Как при создании своей dll подключить туда сторонние dll
Здравствуйте, я работаю в связке C# - Oracle. Если коротко, то вопрос звучит так: "Как при создании своей dll подключить туда сторонние...

Как использовать методы библиотеки DLL, и игнорировать их, когда DLL нету?
Как использовать методы библиотеки DLL , и игнорировать их когда DLL нету Что нужно , мне нужно так чтоб проверялось наличие библиотеки ...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru