私の目標は、シャドウコピーアプリケーションを起動する実行可能ファイルを作成することです。トリックは、このスタータープログラムに外部依存関係がなく、開始する必要のあるプログラムについての知識は必要ないと思っています。C#.dllアセンブリにエントリポイントを含めることはできますか?
また、ディレクトリ内で唯一の実行可能ファイルにしたいと思っています。言い換えれば、.exeアセンブリではなく.dllアセンブリを "実行"する必要があります。 (私は、新しいAppDomainにロードされている.dllファイルの名前を、Main.dllなどのように毎回同じにする必要があります)。それは、 ".NET Frameworkヘッダーで指定されたエントリポイント"で実行を開始すると言います。
この関数を使用しようとすると、「アセンブリ 'DllApp'にエントリポイントが見つかりません」というエラーが発生します。
だけでアセンブリを実行しようとしている私が持っているスタータープログラムは、:
static void Main()
{
AppDomain domain = AppDomain.CreateDomain("DllApp");
domain.ExecuteAssembly("DllApp.dll");
}
アプリケーションコード、.dllファイルで、デフォルトのエントリポイントと:
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
This page on Main() functionsはと言います"ライブラリとサービスは、エントリーポイントとしてMainメソッドを必要としません"。 はにはデフォルトエントリポイントもありません。
私は、int型の戻り値の型などの名前空間、名前空間なし、静的/非静的クラス、
と、引数として文字列[] argsは、メインのプライベート/パブリック静的ボイドのすべての様々な順列を試してみましたMarshalByRefObjectから継承するコードを変更してCreateInstanceを使用してオブジェクトを作成することはできましたが、起動するプログラムにスターターをより強く結びつけるように見えます。 ExecuteAssemblyを使用することができれば、起動されているアプリケーションは静的void Mainを必要とし、それは本当にシンプルで厄介です。
.dllアセンブリがデフォルトのエントリポイントを持ち、ExecuteAssemblyがそれを見つけることは可能ですか、別のルートに行くことを辞さなければなりませんか?
.NETアセンブリ(dll)のエントリポイントは、プロセスとして起動されないため、意味がありません。 – Zenwalker