首页 文章

在装配中找不到入口点

提问于
浏览
0

我有一个应用程序,我需要在其中创建AppDomain和Load Assembly并执行Assembly中的方法 .

这是我的代码

public class CreateAppDomain
{
     public void CreateAppDom()
        {
        AppDomain domain = AppDomain.CreateDomain("myDomain");
        domain.ExecuteAssembly(@"C:\Visual Studio 2005\Projects\A1\A1\bin\Debug\A1.dll");
        domain.CreateInstanceFrom(@"C:\Visual Studio 2005\Projects\A1\A1\bin\Debug\A1.dll","A1.Navigate");
        }

}

我上面的代码是在一个名为CreateAppDomain.cs的类文件中编写的

在我的Default.aspx页面中,我创建了上面类的实例并调用了create方法 . 这是代码

protected void Button1_Click(object sender, EventArgs e)
    {
        CreateAppDomain obj = new CreateAppDomain();
        obj.CreateAppDom();
        Response.Write("Application Domain Successfully created");
    }

当我运行default.aspx页面时,我收到一个错误说

在程序集'A1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'中找不到入口点 .

任何人都可以向我解释上述错误的含义及其解决方案 .

谢谢,

1 回答

  • 6

    AppDomain.ExecuteAssembly() 方法将程序集加载到指定的域中,然后执行它的标准入口点,即 static void Main(string[] args) 方法 .

    请查看here了解详情 .

    你想要什么可能是CreateInstanceAndUnwrap() method的重载之一

    编辑:

    我创建了ConsoleApplication9,除了ClassLibrary1之外还添加了它 . 在ClassLibrary1中我有 Class1

    namespace ClassLibrary1
    {
        public class Class1 : MarshalByRefObject
        {
            public void Go()
            {
                Console.WriteLine("My AppDomain's FriendlyName is: {0}", AppDomain.CurrentDomain.FriendlyName);
            }
        }
    }
    

    在ConsoleApplication9中这些是:

    private static void Main(string[] args)
    {
        Console.WriteLine("Trying to run method in current domain...");
        var inCurrentDomain = new Class1();
        inCurrentDomain.Go();
    
        Console.WriteLine("\nTrying to run method in remote domain...");
        string asmName = typeof(Class1).Assembly.FullName;
        string typeName = typeof (Class1).FullName;
        Console.WriteLine("Class1's assembly name is: {0}\nType name: {1}", asmName, typeName);
    
        var remoteDomain = AppDomain.CreateDomain("My remote domain");
        var remoteObject = (Class1)remoteDomain.CreateInstanceAndUnwrap(asmName, typeName);
        Console.WriteLine("\nRemote instance created. Running Go() method:");
        remoteObject.Go();
    }
    

    跑步时,我有:

    尝试在当前域中运行方法...
    我的AppDomain的FriendlyName是:ConsoleApplication9.exe

    试图在远程域中运行方法...
    Class1的程序集名称为:ClassLibrary1,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null
    输入name:ClassLibrary1.Class1

    远程实例已创建 . 运行Go()方法:
    我的AppDomain的FriendlyName是:我的远程域名

相关问题