部署 ASP.NET Core 1.1.0 & Entity Framework Core 1.1:无法加载程序集 system.Collections.Immutable,版本=1.1.37.0

Deployment ASP.NET Core 1.1.0 & Entity Framework Core 1.1 : Unable to load assembly system.Collections.Immutable, Version=1.1.37.0

我将我的项目迁移到 ASP.NET Core 1.1.0 和 Entity Framework Core 1.1,并且在开发中一切正常。

但是无法在暂存中部署项目,我从 stdout 日志中收到此错误:

Application startup exception: System.IO.FileLoadException: Impossible de charger le fichier ou l'assembly 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60' ou une de ses d‚pendances. La d‚finition trouv‚e du manifeste de l'assembly ne correspond pas … la r‚f‚rence de l'assembly. (Exception de HRESULT : 0x80131040) Nom de fichierÿ: 'Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'
… Agata.Presentation.Web.Startup.ConfigureServices(IServiceCollection services) --- Fin de la trace de la pile … partir de l'emplacement pr‚c‚dent au niveau duquel l'exception a ‚t‚ lev‚e --- … System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() … Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection services) … Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices() … Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()

我检查了解决方案中包含的所有项目的所有 nuget 包,所有依赖项都是最新的。

我已经删除了所有暂存目录并完全重新部署它以确保没有旧的 dll,但错误仍然存​​在。 我还重启了 IIS 池和网站,好几次。

并且服务器上安装了.NET Core 1.1.0。

有人知道这里发生了什么吗?

编辑:这是我的project.json:

 "dependencies": {
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.2",
    "Microsoft.AspNetCore.Diagnostics": "1.1.0",
    "Microsoft.AspNetCore.Razor.Tools": "1.0.0-preview3-final",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.0.0-preview3-final",
    "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": "1.0.0-preview3-final",
    "Npgsql": "3.1.6",
    "Remotion.Linq": "2.1.1",
    "Serilog.Sinks.RollingFile": "3.2.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
    "Microsoft.AspNetCore.StaticFiles": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
    "Microsoft.Extensions.Configuration.Binder": "1.1.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.1.0",
    "Microsoft.Extensions.Logging.Debug": "1.1.0",
    "Serilog.Extensions.Logging": "1.3.0",
    "Microsoft.AspNetCore.Authentication.Cookies": "1.1.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.1.0",
    "Microsoft.AspNetCore.Mvc": "1.1.0",
    "Microsoft.Extensions.Logging": "1.1.0",
    "Microsoft.EntityFrameworkCore": "1.1.0",
    "System.Interactive.Async": "3.1.0",
    "Microsoft.Extensions.DependencyInjection.Abstractions": "1.1.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final"
  },

  "tools": {
    "Microsoft.Extensions.SecretManager.Tools": "1.1.0-preview4-final",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.1.0-preview4-final"
  },

编辑:现在的问题不同了,现在的错误是:

Application startup exception: System.IO.FileLoadException: Impossible de charger le fichier ou l'assembly 'System.Interactive.Async, Version=3.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263' ou une de ses d‚pendances. La d‚finition trouv‚e du manifeste de l'assembly ne correspond pas … la r‚f‚rence de l'assembly. (Exception de HRESULT : 0x80131040) Nom de fichierÿ: 'System.Interactive.Async, Version=3.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263' … Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServiceCollectionExtensions.AddQuery(IServiceCollection serviceCollection) … Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServiceCollectionExtensions.AddEntityFramework(IServiceCollection serviceCollection) … Microsoft.EntityFrameworkCore.Infrastructure.RelationalServiceCollectionExtensions.AddRelational(IServiceCollection services) … Microsoft.Extensions.DependencyInjection.SqlServerServiceCollectionExtensions.AddEntityFrameworkSqlServer(IServiceCollection services) … Agata.Presentation.Web.Startup.ConfigureServices(IServiceCollection services) dans C:\Workspace\PerformancesEtControles\Agata\DevLot1\Presentation\Agata.Presentation.Web\Startup.cs:ligne 65 --- Fin de la trace de la pile … partir de l'emplacement pr‚c‚dent au niveau duquel l'exception a ‚t‚ lev‚e --- … System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() … Microsoft.AspNetCore.Hosting.ConventionBasedStartup.ConfigureServices(IServiceCollection services) … Microsoft.AspNetCore.Hosting.Internal.WebHost.EnsureApplicationServices() … Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()

这是我的更新 project.json :

 "dependencies": {
    "Npgsql": "3.1.6",
    "Remotion.Linq": "2.1.1",
    "Serilog.Sinks.RollingFile": "3.2.0",
    "Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
    "Microsoft.AspNetCore.StaticFiles": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
    "Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
    "Microsoft.Extensions.Configuration.Binder": "1.1.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.1.0",
    "Microsoft.Extensions.Logging.Debug": "1.1.0",
    "Serilog.Extensions.Logging": "1.3.0",
    "Microsoft.AspNetCore.Authentication.Cookies": "1.1.0",
    "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.1.0",
    "Microsoft.AspNetCore.Mvc": "1.1.0",
    "Microsoft.Extensions.Logging": "1.1.0",
    "Microsoft.EntityFrameworkCore": "1.1.0",
    "Microsoft.Extensions.DependencyInjection.Abstractions": "1.1.0",
    "Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
    "System.Interactive.Async": "3.1.0"
  },

  "tools": {
    "Microsoft.Extensions.SecretManager.Tools": "1.1.0-preview4-final",
    "Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.1.0-preview4-final"
  },

我的启动文件的第 65 行是:

services.AddEntityFrameworkSqlServer().AddDbContext<MyDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("MyDbConnectionString")));

它在 visual studio 的调试中仍然工作正常 ...

编辑 2 : 我解决了 System.Interactive.Async 更新 Serilog.Extensions.Logging 包...我现在有错误:

System.IO.FileLoadException: Impossible de charger le fichier ou l'assembly 'System.Collections.Immutable, Version=1.1.37.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' ou une de ses dépendances. La définition trouvée du manifeste de l'assembly ne correspond pas à la référence de l'assembly. (Exception de HRESULT : 0x80131040) Nom de fichier : 'System.Collections.Immutable, Version=1.1.37.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
à Microsoft.AspNetCore.Mvc.Razor.Internal.RazorReferenceManager..ctor(ApplicationPartManager partManager, IOptions`1 optionsAccessor) --- Fin de la trace de la pile à partir de l'emplacement précédent au niveau duquel l'exception a été levée ---

我对这个部署感到疯狂......

解决方案: 部署 Web 应用程序可执行文件的配置文件,其中包含一些 class 库依赖项绑定

解决方案是部署 Web 应用程序可执行文件的配置文件,其中包含一些 class 库依赖项绑定。 .NET 的一个老习惯是从不部署 .config 文件,但这种做法显然需要在 .NET Core 中重新审视。

当您发布您的网站时,生成的包中包含一些配置文件,其中之一与您的应用程序的可执行文件同名,YourWebsiteNamespace.exe.config。此配置文件包含一些 dll 绑定,需要与您的应用程序一起部署

此文件可以包含的内容示例:

<configuration>
  <runtime>
    <gcServer enabled="true" />
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="4.0.0.0" newVersion="4.1.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="1.1.37.0" newVersion="1.2.1.0" />
        <bindingRedirect oldVersion="1.2.0.0" newVersion="1.2.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="1.2.0.0" newVersion="1.4.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Xml.ReaderWriter" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="4.0.0.0" newVersion="4.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
        <bindingRedirect oldVersion="4.0.0.0" newVersion="4.1.2.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
        <bindingRedirect oldVersion="4.0.0.0" newVersion="4.0.1.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>