2

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

但不可能在暂存中部署项目,我从标准输出日志中收到此错误:

应用程序启动异常: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 对应 pas … la r‚f‚rence de l'assembly。(HRESULT 异常:0x80131040)Nom de fichierÿ:'Microsoft.Extensions.DependencyInjection.Abstractions,版本 = 1.0.0.0,文化 = 中性,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 服务) ... 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"
  },

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

应用程序启动异常: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 对应 pas … la r‚f‚rence de l'assembly。(HRESULT 异常:0x80131040)Nom de fichierÿ:'System.Interactive.Async,版本=3.0.0.0,Culture=neutral,PublicKeyToken=94bc3704cddfc263' ... Microsoft.EntityFrameworkCore.Infrastructure.EntityFrameworkServiceCollectionExtensions.AddQuery(IServiceCollection serviceCollection) ... Microsoft.EntityFrameworkCore .Infrastructure.EntityFrameworkServiceCollectionExtensions.AddEntityFramework(IServiceCollection serviceCollection) …微软。

这是我更新的 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 对应 pas à la référence de l'assembly。(HRESULT 异常:0x80131040)名称:'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 应用程序可执行文件的配置文件,其中包含一些类库依赖项绑定

4

1 回答 1

3

解决方案是部署 Web 应用程序可执行文件的配置文件,其中包含一些类库依赖项绑定。.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>
于 2016-11-18T17:11:18.737 回答