пытаюсь запустить приложение wpf из Visual Studio. Ошибка 1001: Assembly.GetEntryAssembly () возвращает ноль - PullRequest
0 голосов
/ 20 февраля 2011

Я готовлю проект установки для своего приложения. Мне нужно создать строку подключения к базе данных, а затем запустить файл сценария на основе строки подключения и обновить также файлы конфигурации приложения.

У меня есть Пользовательский элемент управления WPF Sql Connection , который позволяет мне создавать строку подключения к базе данных из пользовательского ввода.

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

Ошибка 1001: Assembly.GetEntryAssembly () возвращает значение NULL. Задайте свойство Application.ResourceAssembly или используйте синтаксис пакета, чтобы указать сборку, из которой будет загружаться ресурс.

вот код App.xaml.cs

        Uri uri = new Uri(@"/WpfApplication1;component/MainWindow.xaml", UriKind.Relative);
        var window = Application.LoadComponent(uri);

мой класс установщика имеет этот код для запуска приложения.

    public override void Install(IDictionary stateSaver)
    {
        base.Install(stateSaver);
        var thread = new System.Threading.Thread(StartDatabaseUserControl);
        thread.SetApartmentState(System.Threading.ApartmentState.STA);
        thread.Start();
        thread.Join();
    }

Спасибо


Реализованное решение

ну, у меня это работает по-другому.

Изменение свойства настраиваемого действия «Класс установщика» на false в проекте установки Visual Studio сработало для меня.

Мне пришлось добавить еще одну точку входа и установить ее в качестве объекта запуска проекта. даже не нужно добавлять какой-либо код в файл App.xaml.cs.

это новая точка входа

   [STAThread]
    private static void Main(string[] args)
    {
        TargetDirectory = args[0];

        var app = new App();
        app.InitializeComponent();
        app.Run();
    }

1 Ответ

3 голосов
/ 20 февраля 2011

Метод GetEntryAssembly может возвращать значение NULL, если управляемая сборка была загружена из неуправляемого приложения.Например, если неуправляемое приложение создает экземпляр COM-компонента, написанного на C #, вызов метода GetEntryAssembly из компонента C # возвращает значение NULL, поскольку точкой входа для процесса был неуправляемый код, а не управляемая сборка.

* MSDN 1004 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...