質問

IL のプロパティを変更して、少し異なる実行可能ファイルを作成できるアプリケーションを作成しようとしています。たとえば、クライアント A はアプリを実行し、WinForm ラベルのラベルには「クライアント A:」と表示されます。クライアント B がアプリを実行し、ラベルには「クライアント B」と表示されます。構成ファイルまたはリソース ファイルを使用するのは簡単ですが、それはこのプロジェクトのオプションではありません。メイン プログラムは、ユーザーが入力したいくつかのフォーム フィールドに基づいて .exe ファイルを動的に生成できる必要があります。

私の解決策は、動的にするために必要なすべての要素を含むスタンドアロンの実行可能ファイルを作成することでした。次に、ildasm を使用して IL を生成し、この IL を使用して、動的にしたい要素のタグを置き換えることができると考えました。ユーザーが正規表現などを使用してフォームに入力した後、実行時にこれらのタグを置き換えることができます。問題は、ILDASM によって生成された IL ファイルを exe として保存し、実行しようとした場合です。コンソールを起動するだけで何もしません。

私のやり方は間違っているのでしょうか?動的 .exe は非常に単純なものであり、ildasm を使用して IL をリバース エンジニアリングするのが最も早い方法だと考えたため、Reflection については詳しく説明しませんでした。

ご意見やご指摘をいただければ幸いです。トニー

役に立ちましたか?

解決

オンサイトで生成された実行可能ですか?それとも、顧客のための実行可能ファイルを生成し、その結果を出荷できますか?

あなたは、実行ファイルを生成1であれば、

、あなたは別のDLLに顧客固有のデータ/コードを配置し、リソースとして実行可能ファイルに埋め込むと、AppDomain.CurrentDomain.AssemblyResolveイベントが発生したときに、それを読み込むことができます。

あなたは顧客固有のデータに対するバージョン管理を持つことができますこの方法。

他のヒント

ildasm によって作成されたファイルを「再保存」して実行するということは、すべての IL ファイルを実行していることを意味します。 イラズム (提供されている Microsoft IL コンパイラ)?そうでない場合は、試してみるとよいでしょう。IL には非常に特殊な要件がいくつかあり、ilasm は csc や vbc などの高レベルのコンパイラほど寛容ではないため、置換を実行するときは十分に注意してください。

も使用できます モノ・セシル アセンブリ ファイルを変更する場合、IL を顧客に出荷する必要がなくなります。

ソースを配布してコンパイルするというルートを続ける場合は、C# ソースを配布してオンサイトでコンパイルすることで、IL を介さずに同じことを達成できます。 csc フレームワークに含まれています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top