我正在制作一个新的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。我收到一条错误消息,指出“引用无效或不受支持。”
我尝试了其他几项操作,包括重新克隆,清洁,重新清洁,大声咒骂并于第二天回来,但无济于事。
我的阅读列表包括(在此计算机上):
也许还有其他我不记得的
此问题继续存在的一些其他信息:
对于解决此问题的任何帮助,深表感谢。
答案 0 :(得分:0)
由于没有合理的答案,我假设拥有被引用的使用TaskParallelLibrary的.NET 3.5 Framework库实际上意味着使用任何高于4的.NET都会导致此错误。在未指定的条件下。大多数时候。
唯一的解决方案似乎是将所有内容重写为多目标.NET 3.5和.NET Standard,让Standard实现使用真正的TPL,让3.5实现使用NuGet软件包。