我正在为我的应用程序准备一个设置项目。我需要构造数据库连接字符串,然后根据连接字符串运行脚本文件并更新应用程序配置文件。
我有这个WPF Sql Connection User Control,它使我能够从用户输入构造数据库连接字符串。
问题是,当我尝试 从安装程序类启动WPF Sql Connection User Control时,我得到了这个异常。
错误 1001:Assembly.GetEntryAssembly() 返回 null。设置 Application.ResourceAssembly 属性或使用 pack 语法来指定要从中加载资源的程序集。
这是 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();
}
谢谢,
已实施的解决方案
好吧,我让它以不同的方式工作。
在 Visual Studio 设置项目中将自定义操作属性“安装程序类”更改为 false 对我有用。
我不得不添加另一个入口点并将其设置为项目启动对象。甚至不需要在 App.xaml.cs 文件中添加任何代码。
这是新的入口点
[STAThread]
private static void Main(string[] args)
{
TargetDirectory = args[0];
var app = new App();
app.InitializeComponent();
app.Run();
}