asp.net核心应用程序部署为便携式dll(目标已满.net461)

时间:2016-08-30 06:14:48

标签: asp.net .net

在asp.net核心1.0应用程序的上下文中,存在可移植性的概念。您选择发布便携式应用程序(dll' s)并保证在服务器上安装Windows服务器托管软件包并在IIS 中设置您选择发布自包含应用程序的网站它不需要在服务器上安装任何东西,也不应该在IIS中设置。

另外,有一种方法可以在project.json中指定.net461框架,如下所示:

"frameworks": {
   ".net461": {}
  },

当project.json文件包含该代码时,它会自动生成一个自包含的应用程序,它是一个exe和一堆依赖的dll。经典的asp.net应用程序会产生纯粹的dll,就像你在IIS中托管它们一样。

我的问题是: 在指定.net461框架时,如何使dotnet publish生成dll而不是exe。

提出问题的另一种方式是: 当project.json中的框架节点如下所示时,如何使dotnet publish生成可移植应用程序:

"frameworks": {
   ".net461": {}
  },

1 个答案:

答案 0 :(得分:1)

所以我想出来了......我认为独立应用程序意味着对于asp.net核心应用程序,您通常不会在IIS中托管它们。这是一个不正确的假设。您仍然可以在IIS regarldess中将它们设置为与便携式应用程序或独立应用程序完全相同的方式。我有其他问题让我想到了。我通过在Program.cs中使用这个UseSetting方法打开调试功能来解决我的其他问题:

  var host = new WebHostBuilder()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseIISIntegration()
                .UseStartup<Startup>()
                                .UseSetting("detailedErrors", "true")//TODO: make this config driven to not be deployed in prod. needed for alpha debugging.
                                .Build();

            host.Run();

这与经典的asp.net的“customErrors = off”相同。