0

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

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

私はこれを間違った方法で行っていますか?動的な.exeは非常に単純なものであり、ildasmを使用したILのリバースエンジニアリングが最も迅速な方法であるため、Reflectionについて詳しく調べたくありませんでした。

あなたの考えとポインタは大歓迎です。トニー

4

2 に答える 2

0

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

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

これにより、顧客固有のデータをバージョン管理できます。

于 2010-04-06T14:35:38.933 に答える
0

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

また、 Mono.Cecilを使用してアセンブリファイルを変更することもできます。これにより、ILを顧客に出荷する必要がなくなります。

ソースの出荷とコンパイルのルートを続行する場合は、 cscがフレームワークに含まれているため、C#ソースを出荷してオンサイトでコンパイルすることにより、ILを使用せずに同じことを実行できます。

于 2010-04-08T21:07:21.777 に答える