Sea*_*ean 17 c# assemblies appdomain .net-assembly entry-point
我的目标是创建一个可启动影子复制应用程序的可执行文件.诀窍是,我希望这个入门程序没有外部依赖关系,并且不必包含任何有关它必须启动的程序的知识.
我也希望它是目录中唯一的可执行文件.换句话说,我希望它"运行".dll程序集而不是.exe程序集.(我可以要求每次加载到新AppDomain中的.dll文件的名称都是相同的,比如Main.dll或类似的东西.)
它看起来像AppDomain.ExecuteAssembly将完全按照我的意愿行事.它表示它将在".NET Framework标头中指定的入口点"开始执行.
当我尝试使用该功能时,我收到错误"在程序集中找不到入口点'DllApp'".
我有启动程序,只是试图运行程序集:
static void Main()
{
AppDomain domain = AppDomain.CreateDomain( "DllApp" );
domain.ExecuteAssembly( "DllApp.dll" );
}
Run Code Online (Sandbox Code Playgroud)
应用程序代码,在.dll文件中,带有默认入口点:
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault( false );
Application.Run( new Form1() );
}
}
Run Code Online (Sandbox Code Playgroud)
Main()函数的这个页面说"库和服务不需要Main方法作为入口点".它并没有说它们也没有默认入口点.
我已经尝试了public/private static void main的所有各种排列,int返回类型,string [] args作为参数,带有命名空间,没有命名空间,静态/非静态类等.
我能够将我的代码更改为继承MarshalByRefObject,然后使用CreateInstance创建一个对象,但这似乎会将启动器更紧密地耦合到它应该启动的程序.如果我可以使用ExecuteAssembly,那么正在启动的应用程序只需要一个静态的void Main,这非常简单而且很难搞乱.
.dll程序集是否有可能具有默认入口点,并且ExecuteAssembly可以找到它,或者我是否只需要让自己去另一条路径?
| 归档时间: |
|
| 查看次数: |
21706 次 |
| 最近记录: |