0

私はいくつかのタスクを実行するウィンドウアプリケーションを持っています。そのうちの1つはいくつかのファイルを開いています。.netがアプリケーション用のexeファイルを提供していることは誰もが知っています。このアプリケーションを application1 と呼んでいます。

ここで、もう 1 つのウィンドウ アプリケーション (単純な exe) を生成したいと思います。それを application2 と呼びましょう。これにより、いくつかのオプション (application1 によって開かれるファイルの名前など) と生成ボタンを含むフォームが開きます。

生成ボタンをクリックすると、application2 から渡されたデータを使用して、application1 の exe ファイルが生成されます。

どうすればいいのか教えてください。

EDIT 定期的にいくつかのタスクを実行するさまざまなシステムで利用できるexeを生成する必要があります。また、間隔はコンピューターによって異なります。そのため、時間間隔を受け入れ、その間隔のexeを生成する生成を求められます

4

3 に答える 3

1

これを行うには、いくつかの方法があります。

  1. 設定ファイルの名前を持つレジストリ キーを使用して読み込み、app2 から書き込んだ設定を app1 用にファイルに保存し、app1 がそれ​​を実行できるようにします。

  2. ファイル名またはコマンドライン パラメータのいずれかをパラメータとして app1 を呼び出すと、独自のアプリケーション設定ファイルが更新されます。

  3. 設定をデータベースに入れて、すべてのユーザーが db サーバーを表示できると仮定して、どこにでも app1 のコピーを見つけることができるようにします

  4. app1 が常に実行され、app2 が常に実行されている場合、プロセス間通信を行うことができますが、おそらくこれは 4 つの中でより複雑です。

exe を再コンパイルするのではなく、それに対応する構成ファイルを用意する方が理にかなっています。

それに失敗すると、.netをコンパイルするだけで、.csファイルを生成するexeを作成できます(またはファイルを更新し、コンパイル全体を再実行してexeを出力します..コマンドラインコンパイルでグーグルを取ります)が、私はそうしません私の選択。

于 2012-07-04T15:05:59.390 に答える
0

あなたが探しているのは、application1がコマンドライン引数を受け取り、application2がファイルを選択してapplication1を実行し、それらの引数を渡すことができるようにすることだと思います。

.exeを生成したいとは思わない

于 2012-07-04T15:01:17.553 に答える
0

それほど簡単ではありませんが、別の方法は次のとおりです。

  • SettingsOverrideたとえば、リフレクションによって、存在しないクラスから設定を読み取ろうとするアプリケーション 1 を作成します。見つからない場合は、ハードコードされた独自の設定にフォールバックします
  • アプリケーション 2 は、CodeDOMSettingsOverrideなどを使用して、クラスに新しく保存された設定を提供する新しいアセンブリを作成します。
  • アプリケーション 2 はILMergeを使用して、アプリケーション 1 と設定アセンブリから新しい .exe をビルドします。アプリケーション 1 のリフレクション コードは、新しい設定を取得する必要があります。

方法はわかりませんが、埋め込みリソースを使用してこれを行うこともおそらく可能です。最後に、たとえば 400 文字の文字列定数を .exe に入れるXと、アプリケーション 2 がファイルをスキャンして (Unicode/UTF-16 テキストとして) それを見つけ、それを新しい設定を含む文字列に置き換えることができます。チェックサムなどを再計算する必要がある場合は、100% ではありません。

于 2012-07-04T15:14:31.523 に答える