1

我有一个 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 Message=无法加载文件或程序集“System.ComponentModel.Primitives,版本=4.2.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)
Source=Microsoft.Extensions.FileProviders.Physical

这是堆栈跟踪:

堆栈跟踪:在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)(出于源代码控制的目的)。

4

1 回答 1

0

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

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

这是一种解决方法。System.ComponentModel.Primitives发生这种情况是因为尚未针对每个平台(例如 Ubuntu)发布特定于平台的版本。更多细节在这里

于 2018-05-20T07:40:09.097 回答