【问题标题】:Assembly Exception in ASP.Net Core Angular projectASP.Net Core Angular 项目中的装配异常
【发布时间】:2018-05-03 07:03:37
【问题描述】:

我有一个 ASP.NET Core Angular Web 应用程序。我使用 Visual Studio 2017 Angular 模板创建了这个项目。我用最新的依赖项制作了一个非常基本的应用程序:

  • Microsoft.AspNetCore.All (2.0.7) 作为 NuGET
  • Microsoft.NETCore.App (2.0.0) 作为 SDK

我们可以构建应用程序,但在调试时遇到如下异常:

System.IO.FileLoadException HResult=0x80131040 消息=不能 加载文件或程序集'System.ComponentModel.Primitives, 版本=4.2.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'。 找到的程序集的清单定义与程序集不匹配 参考。 (HRESULT 异常:0x80131040)
Source=Microsoft.Extensions.FileProviders.Physical

这里是 StackTrace:

StackTrace:Microsoft.Extensions.FileProviders.PhysicalFileProvider.CreateFileWatcher(String root) at Microsoft.AspNetCore.Hosting.Internal.HostingEnvironmentExtensions.Initialize(IHostingEnvironment hostingEnvironment, String applicationName, String contentRootPath, WebHostOptions options) at Microsoft.AspNetCore.Hosting.WebHostBuilder.BuildCommonServices(AggregateException& hostingStartupErrors) at Microsoft.AspNetCore.Hosting.WebHostBuilder.Build() at WebApp.Program.BuildWebHost(String[] args) in D:\Source\WebApp\Program.cs:line 21 at WebApp.Program.Main(String[] args) in D:\Source\WebApp\Program.cs:line 17

我们尝试使用旧版本的 ASP.NET Core 并返回。问题解决了,但是下次我们打开项目时会发生同样的异常。我们无法将 Microsoft.NETCore.App (2.0.0) 的版本更改为较新的版本,因为它是 blocked by the project.

请注意,我们已将 NugetPackages 的位置更改为特定文件夹 (D:\Source\Library)(出于源代码控制的目的)。

【问题讨论】:

  • 希望您已设置repositoryPath 以正确指向 Nuget 路径
  • @Developer :我没有设置 repositoryPath,因为根据文档,它仅适用于使用 packages.config 的项目。 globalPackagesFolder 仅适用于使用 PackageReference 格式的项目。所以我将 globalPackagesFolder 设置为 NugetPath (D:\Source\Library)
  • 你检查过这个 SO 问题stackoverflow.com/questions/215026/…。它正在尝试查找 System.ComponentModel.Primitives,Version=4.2.0.0,但找不到指定的版本。
  • 这个问题你查了吗github.com/dotnet/sdk/issues/803
  • 在 NuGet 页面上检查 System.ComponentModel.Primitives 包,没有 4.2.0 版本。奇怪。

标签: c# asp.net asp.net-core nuget-package


【解决方案1】:

通过将以下内容添加到 project.json 的“框架”下,禁用特定于执行的运行时程序集:

"System.ComponentModel.Primitives": {
  "version": "4.1.0", // or whatever version you have
  "exclude": "runtime"
},

这是一种解决方法。这是因为 System.ComponentModel.Primitives 的特定平台版本尚未针对每个平台发布 - 例如Ubuntu。更多详情here.

【讨论】:

  • .Net Core 基于 msbuild,这意味着它使用 *.csproj 而不是 project.json。无论如何,我更新了 .csproj 以从参考中排除运行时,但问题仍然存在。您是否在 .net 核心 .csproj 文件中测试过此解决方法?
猜你喜欢
  • 2018-11-24
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 2022-01-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多