none
Публикация консольного приложения .net core RRS feed

  • Вопрос

  • Собственно как консольное приложение (net core) было готово. И скомпилированно в exe файл: dotnet restore, dotnet publish -c release -r win10-x64. После запуска выдает ошибку. В проеке в VS2017 все работает как надо. В качестве бд используется Firebird. Пробовал также публиковать стандартными средствами VS2017, та  же самая карттна, не понимаю даже где копать и что не работает... 

    Ошибка слкдующая: Object reference not set to an instance of an object.

    Возникает на этом участке кода:

    Branches = RepositoryShared.SPR_BASE
                                    .Select(c => new BranchesToListModel
                                    {
                                        Id = c.ID,
                                        Name = c.NAME,
                                        Path = c.PATH
                                    })
                                    .ToList();

    Но в аринцыпе не работают любые операции с бд



    3 октября 2018 г. 17:50

Ответы

Все ответы

  • Добрый день.

    Проверьте правильно ли у вас считываются конфигурации. Судя по этому коду Null у вас может быть только в SPR_BASE (Ведь RepositoryShared у вас статический класс?). Т.е. возникли какие-то проблемы с созданием контекста. Выведите в лог, есть у вас ссылка в SPR_BASE (и в RepositoryShared, если это не статический класс).

    4 октября 2018 г. 8:42
    Отвечающий
  • Я все упростил 

    {
        public class Program
        {
            public static void Main(string[] args)
            {
                using (RepositoryShared RepositoryShared = new RepositoryShared())
                {
                    Console.WriteLine(RepositoryShared.SPR_BASE.Count());
                    Console.ReadKey();
                }
            }
            public class RepositoryShared : DbContext
            {
                public RepositoryShared(){}
                protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
                {                optionsBuilder.UseFirebird("User=SYSDBA;Password=masterkey;Database=PATH;Port=3050;Dialect=3;Charset=UTF8;Connection lifetime=30;Pooling=true;MinPoolSize=0;MaxPoolSize=50;Packet Size=16384;ServerType=0;");
                }

                
                public virtual DbSet<SPR_BASE> SPR_BASE { get; set; }
            }
            public class SPR_BASE
            {
                [Key]
                public int ID { get; set; }
                public string NAME { get; set; }
                public string PATH { get; set; }
            }
        }

    Да, SPR_BASE - null, но почему только при публикации когда я запускаю из студии все нормально 


    • Изменено Makoooo 4 октября 2018 г. 10:05
    4 октября 2018 г. 10:05
  • Попробуйте вот так:

    public RepositoryShared() : base()
    {}

    4 октября 2018 г. 10:14
    Отвечающий
  • Не помогло...
    4 октября 2018 г. 10:33
  • Проверьте может сборок каких не хватает в папке куда паблишите. Ну и попробуйте строку подключения в конструктор передавать:

    public RepositoryShared() : base("<строка подключения>")
    {}

    4 октября 2018 г. 10:44
    Отвечающий