アプリケーションのセットアップ プロジェクトを準備しています。データベース接続文字列を作成し、接続文字列に基づいてスクリプト ファイルを実行し、アプリケーション構成ファイルも更新する必要があります。
ユーザー入力からデータベース接続文字列を構築できるようにするこのWPF Sql接続ユーザーコントロールがあります。
問題は 、インストーラー クラスからWPF Sql 接続ユーザー コントロールを起動しようとすると、この例外が発生することです。
エラー 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セットアッププロジェクトでカスタムアクションプロパティ「Installer Class」をfalseに変更するとうまくいきました。
別のエントリ ポイントを追加し、それをプロジェクトのスタートアップ オブジェクトとして設定する必要がありました。App.xaml.cs ファイルにコードを追加する必要さえありません。
これが新しいエントリーポイントです
[STAThread]
private static void Main(string[] args)
{
TargetDirectory = args[0];
var app = new App();
app.InitializeComponent();
app.Run();
}