小编Loc*_*cke的帖子

在 .NET Core 2.0 DLL 中找不到入口点

我找不到任何可以解释这一点的东西——出于某种原因,我的 .NET Core 2.0 ASP.NET 应用程序没有通过以下方式作为 DLL 运行:

dotnet MyProject.Web.dll

相反,我得到了例外:

未处理的异常:System.MissingMethodException:在程序集“MyProject.Web,版本=1.0.0.0,Culture=neutral,PublicKeyToken=null”中找不到入口点。

namespace MyProject.Web
{
public class Program
{
    public static void Main(string[] args)
    {
        LoadDependencies();

        var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(Directory.GetCurrentDirectory())
            .UseIISIntegration()
            .UseStartup<Startup>()
            .Build();

        host.Run();
    } 

    private static void LoadDependencies()
    {
        DependencyLocator.Instance.DefineIfUndefined<IDataProvider, DataProvider>();
    }
}
}
Run Code Online (Sandbox Code Playgroud)

它作为独立的可执行文件运行良好(当在项目配置中定位“控制台应用程序”时),但现在我正在尝试部署到需要它通过 dotnet 命令运行的服务器(作为 DLL,即“dotnet .\MyProject.Web.dll"),它似乎有问题。我在我的服务器和我的本地开发框上都收到了上述异常。

我有点惊讶它找不到 Main 方法——它在 Program.cs 中被声明为静态方法。我错过了什么吗?

(编辑:为了澄清,我试图针对“dotnet”命令运行的 DLL 来自编译为“控制台库”的目标,因为我的服务器明确要求 DLL,因为它们不会运行可执行文件)。

asp.net .net-core asp.net-core

11
推荐指数
1
解决办法
5676
查看次数

另一个域中的CreateInstanceAndUnwrap?

由于某种原因,我现在遇到了CreateInstanceAndUnwrap的问题(之前正在工作).

我的过程是这样的:

我动态生成一些代码,它通过MEF从子目录加载DLL.然后,这些应用程序从这些DLL加载不同的部分(按需).我不得不更新我的代码,现在包含一个包含调用程序集路径的AppDomainSetup.

我正确地创建了新的AppDomain - 没有问题.当我尝试运行此代码时:

object runtime = domain.CreateInstanceAndUnwrap(
                typeof(CrossDomainApplication).Assembly.FullName,
                typeof(CrossDomainApplication).FullName);
Run Code Online (Sandbox Code Playgroud)

我遇到了大量问题 - 运行时(上面的变量)不再可以转换为CrossDomainApplication或ICrossDomainApplication.

实际对象如下:

public class CrossDomainApplication : MarshalByRefObject, ICrossDomainApplication
Run Code Online (Sandbox Code Playgroud)

接口看起来像:

public interface ICrossDomainApplication
{
    void Run(CrossDomainApplicationParameters parameters);
}
Run Code Online (Sandbox Code Playgroud)

参数看起来像:

[Serializable]
public class CrossDomainApplicationParameters : MarshalByRefObject
{
    public object FactoryType { get; set; }
    public Type ApplicationType { get; set; }
    public string ModuleName { get; set; }
    public object[] Parameters { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

本机类型的运行时似乎是MarshalByRefObject - 它不喜欢转换为其他任何东西.

什么可能出错?

编辑:这是我运行时出现的错误,如下所示:

            ICrossDomainApplication runtime = (ICrossDomainApplication)domain.CreateInstanceAndUnwrap(
                     typeof(CrossDomainApplication).Assembly.FullName,
                     typeof(CrossDomainApplication).FullName);

            //Exception …
Run Code Online (Sandbox Code Playgroud)

c# reflection appdomain

8
推荐指数
1
解决办法
6459
查看次数

标签 统计

.net-core ×1

appdomain ×1

asp.net ×1

asp.net-core ×1

c# ×1

reflection ×1