引用TPL NuGet程序包的ASP.NET Core无法找到文件或程序集System.Threading

时间:2018-07-03 13:31:12

标签: .net-4.0 .net-3.5

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

所引用的.NET Framework 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 Framework 4.6.2和相同的基础库创建.NET Framework ASP.NET MVC应用程序确实可以正常工作。它使用中间.NET Framework 3.5间接地做到这一点(为方便起见,与其他任何东西一样)。
  • 直接使用该库的.NET Framework 4.6.2控制台应用程序也会遇到此问题。因此,似乎不是ASP.NET Core本身。我将相应地更改标签。
  • 使4.6.2控制台使用中介3.5库无法解决该问题。

对于解决此问题的任何帮助,深表感谢。

1 个答案:

答案 0 :(得分:0)

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

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