首页 > 解决方案 > ASP.NET Core 引用 TPL NuGet 包找不到文件或程序集 System.Threading

问题描述

我正在制作一个新的 ASP.NET Core 2.0 项目,本质上是一个 Web API。我必须引用几个 .NET 3.5 程序集的程序集,因此我将其作为 .NET Framework 项目运行,仅在可能的情况下使用 .NET Core 改进。

引用的 .NET 框架 3.5 程序集引用了 TaskParallelLibrary (1.0.2856)。我认为这就是我的问题所在。值得注意的是,Web API 在其示例端点上工作,并且一切都按预期工作。

当我运行应用程序并尝试使用引用的库时,调用失败并且我收到以下异常:

Could not load file or assembly 'System.Threading, Version=1.0.2856.102, Culture=neutral,
PublicKeyToken=31bf3856ad364e35'    
or one of its dependencies. The system cannot find the file specified.

我尝试了几件事,包括:

添加一个 App.configx 文件以尝试强制它以 .NET Framework 4 的 System.Threading 为目标,假设该文件可用。受页面启发,我找不到以下链接:

内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <!-- this is only here for binding redirects -->
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Threading" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>      
    </assemblyBinding>
  </runtime>
</configuration>

直接将该版本的 TaskTPLLibrary 包添加到项目中。到目前为止,它没有帮助。

将 Microsoft.Bcl.Async 库添加到我的项目中。再次,什么都没有。

尝试从“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETCore\v4.5\System.Threading.dll”直接导入 System.Threading。我收到一条错误消息,指出“引用无效或不受支持”。

我尝试了其他几件事,包括重新克隆、清洁、重新清洁、大声咒骂并改天再来,但都无济于事。

我的阅读清单包括(在这台电脑上):

可能还有其他我不记得的

随着这个问题的继续,一些额外的信息:

非常感谢解决此问题的任何帮助。

标签: .net-4.0.net-3.5

解决方案


由于没有合理的答案,我假设引用使用 TaskParallelLibrary 的 .NET 3.5 Framework 库实质上意味着使用 4 以上的任何 .NET 都会导致此错误。在未指定的条件下。大多数时候。

唯一的解决方案似乎是将所有内容重写为多目标 .NET 3.5 和 .NET Standard,并让 Standard 实现使用真正的 TPL,让 3.5 使用 NuGet 包。


推荐阅读