@kingslayer

Почему не открывается после сборки?

Приложение открывается в visual studio, но не открывается после сборки проекта и установки его но другую машину, почему и как это починить? Для создания уставщика использовался setup project
using System.Data.Entity;
using Microsoft.EntityFrameworkCore;

namespace WinFormsApp2
{
    public partial class Form1 : Form
    {

        ApplicationContext context;
        Archive arch;
        public Form1()
        {
            context = new ApplicationContext();
            arch = new Archive();
            MessageBox.Show("hello");
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.ShowDialog();
            if (form2.textBox1.Text.Length > 0 && form2.textBox2.Text.Length > 0 && form2.textBox3.Text.Length > 0 && form2.textBox4.Text.Length > 0 && form2.textBox5.Text.Length > 0 && form2.textBox6.Text.Length > 0 && form2.textBox7.Text.Length > 0 && form2.textBox8.Text.Length > 0)
            {
                model transit = new model
                {
                    FIO = form2.textBox1.Text,
                    IIN = form2.textBox2.Text,
                    phonenumber = form2.textBox3.Text,
                    room = form2.textBox4.Text,
                    layer = form2.textBox5.Text,
                    block = form2.textBox6.Text,
                    dormitory = form2.textBox7.Text,
                    checkin = Convert.ToDateTime(form2.textBox8.Text)
                };
                context.Data.Add(transit);
                context.SaveChanges();
            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Delete delete = new Delete();
            delete.ShowDialog();
            var x = context.Data.Where(p => p.FIO.Equals(delete.textBox1.Text));
            foreach (var c in x)
            {
                archive f = new archive
                {
                    FIO = c.FIO,
                    room = c.room,
                    layer = c.layer,
                    block = c.block,
                    dormitory = c.dormitory,
                    checkin = c.checkin,
                    checkoput = Convert.ToDateTime(delete.textBox2.Text)
                };
                arch.Data.Add(f);
                arch.SaveChanges();
                context.Data.Remove(c);
                context.SaveChanges();
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Form3 form = new Form3();
            form.ShowDialog();
            var x = context.Data.Where(p => p.FIO.Equals(form.textBox1.Text));
            string final = null;
            foreach (var c in x)
            {
                final = "ФИО: " + c.FIO + " Номер телефона: " + c.phonenumber;
                richTextBox1.Text = final;
            }
        }

        private void button4_Click(object sender, EventArgs e)
        {
            Form4 form = new Form4();
            form.ShowDialog();
            var x = context.Data.Where(p => p.phonenumber.Equals(form.textBox1.Text));
            string final = null;
            foreach (var c in x)
            {
                final = "ФИО: " + c.FIO + " Номер телефона: " + c.phonenumber;
                richTextBox1.Text = final;
            }
        }
    }
}
  • Вопрос задан
  • 105 просмотров
Решения вопроса 3
VoidVolker
@VoidVolker Куратор тега C#
Dark side eye. А у нас печеньки! А у вас?
Скорее всего что-то не было установлено - дотнет, библиотеки, пакеты и другие зависимости. Сделайте отладочную сборку с выводом всех ошибок и запустите её на целевой машине и смотрите, что оно требует. Аналогично с дистрибутивом - убедитесь, что все зависимости включены в дистрибутив и устанавливаются как и куда надо. Тоже сделайте отладочную сборку и проведите отладку дистрибутива.
Ответ написан
Комментировать
tentrun
@tentrun
Fullstack (asp.net /react, vue, angular) deletant
Упакуй dotnet внутрь приложения (self-hosted вроде называется) и убедишь, что делаешь в релизе / паблише
Ответ написан
Комментировать
igolets
@igolets
Программист C#, MSSQL
Моя процедура поиска ошибки такая:
  1. Запустить не из студии, а из каталога bin, чтобы убедиться, что студия не влияет на это.
  2. Установить у себя и запустить
  3. Сравнить архитектуру процессора
  4. Сравнить каталог с установленной программой на целевой машине и каталог bin на девелоперской
  5. Посмотреть EventLog на целевой машине, там может быть ругань на отсутствие файла или на ошибку доступа
  6. В program.cs весть код main() обуть в try-catch и показывать содержимое эсепшена на экран, или писать в темп каталог.


Наиболее вероятные причины сбоев:
  1. Не установлен .net нужной версии
  2. Запуск сборки х64 на х32
  3. Не установлены сторонние библиотеки
  4. Не доставлена одна из сборок
  5. Один из файлов в процессе сборки установщика побился
  6. Что-то прописано в конфиге, но требует настроки на целевой машине (строка подключения, например)
  7. Недостаточно доступа у юзера на целевой машине
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы