部署 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>
我将我的项目迁移到 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>