Loc*_*cke 11 asp.net .net-core asp.net-core
我找不到任何可以解释这一点的东西——出于某种原因,我的 .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,因为它们不会运行可执行文件)。
好的,所以这很烦人,希望能帮助其他人。
我的主机只想通过 .NET Core 专门运行 DLL。它们不允许运行可执行文件。
因为 DLL 经常被构建为项目中的“类库”输出类型,我认为这是构建它所必需的工作流程。但是,我发现每当您将项目构建为“控制台应用程序”时,它都会构建一个 DLL 和一个 EXE。因此,在上面的示例中,当输出类型为“控制台应用程序”时,MyProject.Web.exe 和 MyProject.Web.dll 都是构建的。
来自“控制台应用程序”的 MyProject.Web.dll 与来自“类库”的 MyProject.Web.Dll 不同。来自“类库”的那个将没有可以在其上发现的入口点,这将导致上述问题。
因此,如果您遇到此错误,请查找与您的 EXE 同名的 DLL——这是您要在 dotnet 控制台中运行的实际 DLL(即 dotnet MyProject.Web.dll)
| 归档时间: |
|
| 查看次数: |
5676 次 |
| 最近记录: |