使用完整的.NET部署ASP.NET

时间:2017-02-15 04:45:36

标签: c# asp.net iis deployment asp.net-core

如果我还使用.NET 4.5.2中的某个库,我是否可以部署我的asp.net核心应用程序。

为了描述我的问题,在我的应用程序中,我使用来自完整.NET的SyndicationFeed 在我的project.json中"框架"第一节:

  "frameworks": {
    "net452": {
      "frameworkAssemblies": {
        "System.ServiceModel": ""
      },
      "dependencies": {
      }
    },
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  }

在其他部分,我使用ASP.CORE包,如:

"Microsoft.EntityFrameworkCore.Design": "1.1.0",
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
"Hangfire.AspNetCore": "1.6.8",

等等。

所以问题是可以部署到IIS。我应该使用ASP.CORE或完整的.NET运行部署到服务器。

1 个答案:

答案 0 :(得分:1)

简而言之:是的,这是可能的。但是需要完整的.NET Framework(在服务器上)。

长篇故事:

frameworks中有两个projects.json有效地在编译/发布期间创建了两个不同的应用(一个用于net462,另一个用于netcoreapp1.1)。这是两个不同的应用程序,为来自相同源代码的不同框架编译。

要先运行(对于net462),您需要安装了.NET Framework的计算机。对于其他(对于netcoreapp),您需要安装.NET Core。您无法“交换”(在net462上运行.NET Core - 构建应用,反之亦然。)

但是看着你的project.json我无法相信你的应用程序会成功编译。您的应用需要System.ServiceModel才能运行。但它仅适用于net462。这意味着在编译期间,第一个应用程序(用于net462)成功编译,而第二个(net netcoreapp)应该失败(找不到类,找不到命名空间等)。

从project / solution文件夹中的命令行运行dotnet builddotnet publish。看到任何错误?

因此,当您需要.NET Core不可用的包/类时,您无法在.NET Core下创建/构建/运行。

可能的解决方案:

  • 替换netcore兼容的包(如果存在,我不知道),或重建(端口)现有兼容(如Joel所说);
  • 完全删除此软件包(自行实现所需的代码);
  • 不要定位netcoreapp1.1;
  • 在您使用此软件包的位置添加条件编译(#if),因此仅在net462 - 版本的应用中使用if。否则(#else)添加NotImplementedException,null结果或其他东西(取决于) - 在编译后你将有两个不同的应用程序:net462的全功能和限制 - 适用于netcoreapp