【发布时间】:2018-08-20 17:51:53
【问题描述】:
我找不到任何可以解释这一点的东西——由于某种原因,我的 .NET Core 2.0 ASP.NET 应用程序没有通过以下方式作为 DLL 运行:
dotnet MyProject.Web.dll
相反,我得到了异常:
未处理的异常:System.MissingMethodException:在程序集“MyProject.Web,Version=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>();
}
}
}
它作为独立的可执行文件运行良好(当在项目配置中定位“控制台应用程序”时),但现在我正在尝试部署到需要它通过 dotnet 命令运行的服务器(作为 DLL,即“dotnet .\MyProject.Web.dll”),它似乎有问题。我的服务器和本地开发框都出现上述异常。
我有点震惊,它找不到 Main 方法——它在 Program.cs 中被声明为静态。我错过了什么吗?
(编辑:澄清一下,我试图针对“dotnet”命令运行的 DLL 来自编译为“控制台库”的目标,因为我的服务器明确要求 DLL,因为它们不会运行可执行文件)。
【问题讨论】:
-
我真的被你的问题弄糊涂了。控制台应用程序需要 main 功能,并且根据您的代码,当您在独立运行时,您正在运行控制台。请分享在服务器上部署的原因。
-
当我尝试通过 dotnet MyProject.Web.dll 运行应用程序时,我得到一个异常,如上所述。如果我在本地编译并让它作为应用程序运行,它运行/工作得很好。但是,我们的服务器环境要求我们的 Web 内容通过 dotnet 命令作为 DLL 部署/运行。当我通过 dotnet 运行 DLL 时,它不起作用,这就是我想要弄清楚的。
标签: asp.net asp.net-core .net-core