Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 16.06.2017
Сообщений: 26

Публикация программы C#

07.04.2023, 07:04. Показов 2959. Ответов 33

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Не запускается приложение после публикации и установки его на ПК.

Релизная сборка запускается из VS или прямиком из папки \bin\Release через EXE файл, ошибок не выдаёт.
Публикуется с помощью ClickOnce тоже нормально, скачивается, предлагает установить компоненты и т.д. - всё ок. Устанавливается, создаётся ярлык на рабочем столе только с типом .appref-ms, папка в свойствах указывается Рабочий стол (а где тогда хранятся все файлы (exe) ?)
Программа появляется в "Удалении программ".
Но при нажатии на ярлык с рабочего стола ничего не происходит: процесс ClickOnce появляется и сразу исчезает.
Запускаю на том же ПК, на котором разрабатываю.

Файлы приложения в состоянии "Включены" (фото не смог добавить).
Ресурсы (две картинки, одна база sqlite): Содержание, всегда копировать.

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

Добавлено через 16 минут
Папку расположения файлов я нашёл, там есть EXE файл, но он тоже не запускается, как и через рабочий стол, хотя все DLL, папка ресурсов на месте, как и в папке \bin\Release

Добавлено через 2 минуты
Мб есть другие пути решения этого.
Необходимо:
Чтобы программа проверяла наличие обновления, либо я могу принудительно сделать всплывающее окно с требованием обновить, где будет ссылка на скачивание новой версии. Но при обновлении важно сохранять встроенную базу с уже добавленными данными и параметры.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.04.2023, 07:04
Ответы с готовыми решениями:

Публикация программы C# с файлами в Visual Studio 2022
Делаю инсталлятор для приложения на C# в VS2022 через публикацию в свойствах проекта. При запуске установленного приложения не подключаются...

Публикация приложения (обновление программы в сети)
Добрый день. Потихоньку изучаю C#, придумывая для себя различные интересные задачки. На данном этапе я реализовываю индикатор не...

Публикация программы в интернете
Здравствуйте! Подскажите пожалуйста, в 1С Предприятие 8.3 создал маленькую программу, установил на комп апач, опубликовал, локально всё...

33
0 / 0 / 0
Регистрация: 16.06.2017
Сообщений: 26
07.04.2023, 14:52  [ТС]
Студворк — интернет-сервис помощи студентам
Наконец-то получилось выловить ошибку.

bin\x86\Release\app.publish\файл.EXE

1:

Версия платформы: v4.0.30319
Описание. Процесс был завершен из-за необработанного исключения.
Сведения об исключении: System.DllNotFoundException
в System.Data.SQLite.UnsafeNativeMethods.s qlite3_config_none(System.Data.SQLite.SQ LiteConfigOpsEnum)
в System.Data.SQLite.SQLite3.StaticIsIniti alized()
в System.Data.SQLite.SQLiteLog.PrivateInit ialize(System.String)
в System.Data.SQLite.SQLiteLog.Initialize( System.String)
в System.Data.SQLite.SQLiteConnection..cto r(System.String, Boolean)
в System.Data.SQLite.SQLiteConnection..cto r()
в PROGA1.MainWindow..ctor()
2
Сведения об исключении: System.Windows.Markup.XamlParseException
в System.Windows.Markup.WpfXamlLoader.Load (System.Xaml.XamlReader, System.Xaml.IXamlObjectWriterFactory, Boolean, System.Object, System.Xaml.XamlObjectWriterSettings, System.Uri)
в System.Windows.Markup.WpfXamlLoader.Load Baml(System.Xaml.XamlReader, Boolean, System.Object, System.Xaml.Permissions.XamlAccessLevel, System.Uri)
в System.Windows.Markup.XamlReader.LoadBam l(System.IO.Stream, System.Windows.Markup.ParserContext, System.Object, Boolean)
в System.Windows.Application.LoadBamlStrea mWithSyncInfo(System.IO.Stream, System.Windows.Markup.ParserContext)
в System.Windows.Application.LoadComponent (System.Uri, Boolean)
в System.Windows.Application.DoStartup()
в System.Windows.Application.<.ctor>b__1_0 (System.Object)
в System.Windows.Threading.ExceptionWrappe r.InternalRealCall(System.Delegate, System.Object, Int32)
в System.Windows.Threading.ExceptionWrappe r.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
в System.Windows.Threading.DispatcherOpera tion.InvokeImpl()
в System.Windows.Threading.DispatcherOpera tion.InvokeInSecurityContext(System.Obje ct)
в MS.Internal.CulturePreservingExecutionCo ntext.CallbackWrapper(System.Object)
в System.Threading.ExecutionContext.RunInt ernal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
в System.Threading.ExecutionContext.Run(Sy stem.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
в System.Threading.ExecutionContext.Run(Sy stem.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
в MS.Internal.CulturePreservingExecutionCo ntext.Run(MS.Internal.CulturePreservingE xecutionContext, System.Threading.ContextCallback, System.Object)
в System.Windows.Threading.DispatcherOpera tion.Invoke()
в System.Windows.Threading.Dispatcher.Proc essQueue()
в System.Windows.Threading.Dispatcher.WndP rocHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
в MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
в MS.Win32.HwndSubclass.DispatcherCallback Operation(System.Object)
в System.Windows.Threading.ExceptionWrappe r.InternalRealCall(System.Delegate, System.Object, Int32)
в System.Windows.Threading.ExceptionWrappe r.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
в System.Windows.Threading.Dispatcher.Lega cyInvokeImpl(System.Windows.Threading.Di spatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
в MS.Win32.HwndSubclass.SubclassWndProc(In tPtr, Int32, IntPtr, IntPtr)
в MS.Win32.UnsafeNativeMethods.DispatchMes sage(System.Windows.Interop.MSG ByRef)
в System.Windows.Threading.Dispatcher.Push FrameImpl(System.Windows.Threading.Dispa tcherFrame)
в System.Windows.Threading.Dispatcher.Push Frame(System.Windows.Threading.Dispatche rFrame)
в System.Windows.Application.RunDispatcher (System.Object)
в System.Windows.Application.RunInternal(S ystem.Windows.Window)
в System.Windows.Application.Run(System.Wi ndows.Window)
в PROGA1.App.Main()
3

Имя сбойного приложения: PROGA1.exe, версия: 1.0.0.0, метка времени: 0x87dec3f4
Имя сбойного модуля: KERNELBASE.dll, версия: 10.0.19041.2728, метка времени: 0x8aa4a53c
Код исключения: 0xe0434352
Смещение ошибки: 0x0012e4f2
Идентификатор сбойного процесса: 0x611c
\bin\x86\Release\файл.EXE - запускается и работает
0
Эксперт .NET
 Аватар для Rius
13829 / 7901 / 1708
Регистрация: 25.05.2015
Сообщений: 23,993
Записей в блоге: 14
07.04.2023, 15:02
У вас нативные либы от SQLite не копируются в целевой каталог при публикации.

Добавлено через 5 минут
Подключать их сейчас надо через Nuget.

Последний опубликованный проект с SQLite и публикацией у меня тут.
Правда, он sdk-style и на .Net 6.
Ничего особенного там не нужно было настраивать для копирования, т.к. всё через Nuget.
0
0 / 0 / 0
Регистрация: 16.06.2017
Сообщений: 26
07.04.2023, 15:11  [ТС]
+ - я это понял, как это решить?

System.Data.SQLite - в Nuget сразу подключена была, я же её юзаю.
Обозреватель объектов-ссылки - все библиотеки есть в списке

Перекидывание всех DLL из папки \bin\x86\Release\ в bin\x86\Release\app.publish\ не помогло.ъ

Просто реально не могу осознать в чём кроется проблема.
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,770
Записей в блоге: 4
07.04.2023, 15:12
vukumanku, В свойствах DLL поставить копировать в выходной каталог - Всегда.
0
0 / 0 / 0
Регистрация: 16.06.2017
Сообщений: 26
07.04.2023, 15:19  [ТС]
Это имеете ввиду?
Миниатюры
Публикация программы C#  
0
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,770
Записей в блоге: 4
07.04.2023, 15:37
vukumanku, Имею ввиду в свойствах обозревателя решений. Выделить там файл с DLL и поставить копировать всегда.
0
0 / 0 / 0
Регистрация: 16.06.2017
Сообщений: 26
07.04.2023, 15:43  [ТС]
Я мб надоел тут уже, но истина где-то рядом.

В обозревателе решений есть вот это (скрин): папка packages, которая не включена в проект, можно "Включить в проект" - это то, что надо? В папке много подпапок. Или надо все DLL в отдельную папку собрать и добавить в проект?
Миниатюры
Публикация программы C#  
0
Эксперт .NET
 Аватар для Rius
13829 / 7901 / 1708
Регистрация: 25.05.2015
Сообщений: 23,993
Записей в блоге: 14
07.04.2023, 15:54
Это должно делаться автоматически.
Вручную копирование ставят при ручном подключении dll.

Добавлено через 42 секунды
Так как проект может публиковаться под разные платформы, он сам должен выбирать, что копировать
0
0 / 0 / 0
Регистрация: 16.06.2017
Сообщений: 26
07.04.2023, 15:57  [ТС]
"Имею ввиду в свойствах обозревателя решений. Выделить там файл с DLL и поставить копировать всегда."

Получается у меня там нет DLL

Добавлено через 2 минуты
Так я понимаю в этом и ошибка при сборке публикации.
Хотя релиз же норм работает
0
Эксперт .NET
 Аватар для Rius
13829 / 7901 / 1708
Регистрация: 25.05.2015
Сообщений: 23,993
Записей в блоге: 14
07.04.2023, 16:20
Лучший ответ Сообщение было отмечено vukumanku как решение

Решение

Если SDK-style проект, попробуйте добавить
XML
1
2
3
4
5
6
 <PropertyGroup> 
    <ContentSQLiteInteropFiles>true</ContentSQLiteInteropFiles>
    <CopySQLiteInteropFiles>false</CopySQLiteInteropFiles>
    <CleanSQLiteInteropFiles>false</CleanSQLiteInteropFiles>
    <CollectSQLiteInteropFiles>false</CollectSQLiteInteropFiles>
 </PropertyGroup>
Источник
0
0 / 0 / 0
Регистрация: 16.06.2017
Сообщений: 26
07.04.2023, 16:32  [ТС]
1 скрин выдаёт ошибки, не запускается. Расположение \bin\x86\Release\app.publish\Application Files\
2 скрин запускается. Расположение \bin\x86\Release
Миниатюры
Публикация программы C#   Публикация программы C#  
0
0 / 0 / 0
Регистрация: 16.06.2017
Сообщений: 26
07.04.2023, 16:55  [ТС]
Всё, это помогло.
Огромное спасибо!

Вопрос остался, который был у меня в самом начале. Правильно ли я понимаю работу обновления через ClickOnce публикацию: при заливке на сервер новой версии программы, обновляться будут только те файлы, которые были изменены? Просто где-то читал, что при выпуске каждой версии создаётся новая папка, соответственно, как новая программа будет?
Суть чтобы пользователи использовали базу данных sqlite, но при обновлении (не затрагивающим sqlite файл) база не заменялась.

Поясните, пожалуйста, как это работает.
0
Эксперт .NET
 Аватар для Rius
13829 / 7901 / 1708
Регистрация: 25.05.2015
Сообщений: 23,993
Записей в блоге: 14
07.04.2023, 17:01
Пример проекта с публикацией во вложении.

Цитата Сообщение от vukumanku Посмотреть сообщение
при заливке на сервер новой версии программы, обновляться будут только те файлы, которые были изменены?
Вероятно, будут скачиваться ВСЕ. И изменены будут все.
Цитата Сообщение от vukumanku Посмотреть сообщение
Просто где-то читал, что при выпуске каждой версии создаётся новая папка, соответственно, как новая программа будет?
Да.
Цитата Сообщение от vukumanku Посмотреть сообщение
Суть чтобы пользователи использовали базу данных sqlite, но при обновлении (не затрагивающим sqlite файл) база не заменялась.
Файл бд не должен поставляться вместе с программой. В крайнем случае, как образец, который куда-то однократно копируется для использования.
Правильно - делайте миграции. Чтобы при отсутствии файла, он создавался. Чтобы при изменении структуры БД, она обновлялась без потери данных.
Вложения
Тип файла: zip Demo4.zip (1.7 Кб, 2 просмотров)
1
0 / 0 / 0
Регистрация: 16.06.2017
Сообщений: 26
07.04.2023, 17:10  [ТС]
Огромное спасибо ещё раз.
Тоже склонялся к созданию базы программно, а не файл прикреплять.
Сейчас протестил: Properties.Settings.Default сохраняются при скачивании новой версии, которые были добавлены после взаимодействия с предыдущей версией, что уже хорошо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.04.2023, 17:10

Публикация, регистрация готовой программы
Подскажите, где и как можно зарегистрировать (и опубликовать) готовую программу, созданную в Visual Studio 2017? Должен же быть какой-то не...

Публикация в 1С
Здравствуйте. Кто умеет публиковать http-сервис в 1С? Помогите. Локалхост работает, файл default.vrd при публикации создается. Имя...

Публикация в Twitter
как сделать так чтобы приложение имело доступ в твиттерю У меня есть контент (набор фотографий) которые приходят уведомление на телефон...

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

Публикация игры
Всем доброго времени суток. Заранее прошу прощения за глупый вопрос, но я так и не смог найти на него ответа сам. Как загрузить игру на...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru