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

C# 使用完整的.NET部署ASP.NET,c#,asp.net,iis,deployment,asp.net-core,C#,Asp.net,Iis,Deployment,Asp.net Core,如果我还使用.NET4.5.2中的一些库,我想知道是否可以部署我的asp.net核心应用程序 为了描述我的问题,我在我的应用程序中使用了来自full.NET的SyndicationFeed 在“框架”部分的project.json中,我有: "frameworks": { "net452": { "frameworkAssemblies": { "System.ServiceModel": "" }, "dependencies":

如果我还使用.NET4.5.2中的一些库,我想知道是否可以部署我的asp.net核心应用程序

为了描述我的问题,我在我的应用程序中使用了来自full.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或full.NET运行的服务器。

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

长话短说:

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

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

但是看看你的
project.json
,我真不敢相信你的应用程序编译成功了。你需要
System.ServiceModel
才能让你的应用程序工作。但它只适用于net462。这意味着在编译过程中,第一个应用程序(对于net462)编译成功,而第二个应用程序(net netcoreapp)应该失败(未找到类、未找到命名空间等)

从项目/解决方案文件夹中的命令行运行
dotnet build
dotnet publish
。看到错误了吗

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

可能的解决办法:

  • 替换netcore兼容的软件包(如果有,我不知道),或者重新构建现有的兼容(端口)(正如Joel所说)
  • 完全删除此包(自己实现所需的代码)
  • 不要以netcoreapp1.1为目标
  • 在使用此软件包的地方添加条件编译(
    #if
    ),这样您将只在应用程序的
    net462
    版本中使用if。否则(
    #else
    )添加NotImplementedException、null result或其他内容(视情况而定)-编译后您将拥有两个不同的应用程序:net462的全功能应用程序和netcoreapp的受限功能应用程序

您不能手动导入辛迪加订阅源吗?我们所做的是使用dotPeek从非dotnet核心包反编译代码,并使em dotnet complient。大多数情况下,每个包裹只需1/2小时。(如我为cloudinary做的)