无法加载 System.Threading.Tasks.Extensions
Unable to load System.Threading.Tasks.Extensions
我有一个基于 .net Framework 4.5.1 的 Web 项目。我们正在尝试为该项目添加 PostgreSQL 支持。使用 Nuget,我已经为项目安装了 4.0.4 npgsql。在引用下,我看到以下内容被添加到项目中。
- Npgsql - 4.0.4.0 - 运行时版本 v4.0.30319
- System.Threading.Tasks.Extensions - 4.2.0.0 - 运行时版本 v4.0.30319
当我尝试 运行 项目并连接并从数据库获取数据时,我收到以下错误,提示 FileNotFoundException:
System.TypeInitializationException
HResult=0x80131534
Message=The type initializer for 'com.rsol.RConfig' threw an exception.
Source=RConfig
StackTrace:
at com.rsol.RConfig.getInstance() in C:\Workspaces\PS\RConfig\RConfig.cs:line 1113
at RAdmin.Global.Application_Start(Object sender, EventArgs e) in C:\Workspaces\PS\RAdmin\Global.asax.cs:line 528
Inner Exception 1:
TypeInitializationException: The type initializer for 'com.rsol.Db.DbMgr' threw an exception.
Inner Exception 2:
FileNotFoundException: Could not load file or assembly 'System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified.
Inner Exception 3:
FileNotFoundException: Could not load file or assembly 'System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified.
使用 Nuget 安装的 System.Threading.Tasks.Extensions 未加载到项目中。当我检查 System.Threading.Tasks.Extensions 引用的属性时,dll 文件存在于该位置。我还尝试使用 gacutil 将 System.Threading.Tasks.Extensions.dll 文件安装到程序集。我仍然遇到同样的错误。
如果您需要任何其他信息,请告诉我。
非常感谢任何帮助。
更新 Nuget 包
https://www.nuget.org/packages/System.Threading.Tasks.Extensions/
会解决你的问题
更新 Nuget 包对我不起作用。
什么有效?
在 app.config 需要更改
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
到
<bindingRedirect oldVersion="0.0.0.0-4.5.4" newVersion="4.5.4" />
当前版本 4.7.2 应该可以。
微软喜欢 ;)
就我而言,我在升级到 4.5.4 版后遇到了问题,并尝试了@user2713341 的回答。它没有用,但让我朝着正确的方向前进。
我的项目没有这个库的绑定,所以我添加了绑定并且它起作用了
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
成功了。
请注意,即使版本是 4.5.4,它也应该是 4.2.0.1。
尝试下载包并明确添加对您的项目的引用。应该可以,我刚刚解决了。
问题出在 *.csproj 文件中。对 System.Threading.Tasks.Extensions.4.5.4 的引用错误,因为此 dll 未加载。
从 lib 引用正确的框架版本文件夹后开始工作
旧参考:
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.2\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
corrected one:
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net472\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
请先清理 nuget 缓存,然后运行测试用例它会工作
@Keyjote 的回复对我来说是解决方案的根本,但我没有挑选程序集,而是能够重新安装。这似乎自动修复了 app.config 文件。
工具 -> Nuget 数据包管理器 -> 数据包管理器控制台
Update-Package -reinstall -Project <your project name>
这样您就不需要弄乱语法,也不必弄清楚 PublicKeyToken 值。
如果你想对整个解决方案都这样做,你可以省略-Project <>
参数。
我在尝试使用 Entity Framework 核心 (EFC) 版本 3.1.8 和程序包管理器控制台进行迁移时,在不同的上下文中遇到了错误。项目构建成功。
按照此线程中的建议尝试绑定重定向并(重新)安装不同版本的 System.Threading.Tasks.Extensions
以及 EFC(如其他地方所建议的)对我不起作用。
我设法通过
解决了问题
- 删除我项目根目录中的
packages/
目录
- 使用手册 NuGet Package Restore(link 至 Microsoft Docs)通过 Visual Studio
我收到了类似的错误消息 - 但原因不同。在 NUGET 管理器设置的 packages.config 中有一个新版本的引用 - 但在项目引用中有一个旧版本的引用。解决方案——删除项目reference
中的ref
我一直在为 bindingRedirect 苦苦挣扎。
我终于找到了解决我问题的真正陷阱。
我在 .net 4.8 中有一个 WCF 服务器项目,具体取决于 .net 标准 2.0 中的项目。
我正在更新引用项目中的 Nuget 包。
我有各种各样的问题,我不会在这里提及它们。
我在 web.config 中有 bindingRedirects。我不得不重新发现那些是不必要的,甚至可能是冲突的,因为它们会自动生成到 dll.config 中。有多个方面可以使这项工作发挥作用,请参阅别处。
但对我来说真正的难题是对于 IIS,我必须 LINK web.config 到 dll.config。后者是完整的 config-file,具有所有的 bindingRedirects,最终证明是有效的。
我有一个基于 .net Framework 4.5.1 的 Web 项目。我们正在尝试为该项目添加 PostgreSQL 支持。使用 Nuget,我已经为项目安装了 4.0.4 npgsql。在引用下,我看到以下内容被添加到项目中。
- Npgsql - 4.0.4.0 - 运行时版本 v4.0.30319
- System.Threading.Tasks.Extensions - 4.2.0.0 - 运行时版本 v4.0.30319
当我尝试 运行 项目并连接并从数据库获取数据时,我收到以下错误,提示 FileNotFoundException:
System.TypeInitializationException
HResult=0x80131534
Message=The type initializer for 'com.rsol.RConfig' threw an exception.
Source=RConfig
StackTrace:
at com.rsol.RConfig.getInstance() in C:\Workspaces\PS\RConfig\RConfig.cs:line 1113
at RAdmin.Global.Application_Start(Object sender, EventArgs e) in C:\Workspaces\PS\RAdmin\Global.asax.cs:line 528
Inner Exception 1:
TypeInitializationException: The type initializer for 'com.rsol.Db.DbMgr' threw an exception.
Inner Exception 2:
FileNotFoundException: Could not load file or assembly 'System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified.
Inner Exception 3:
FileNotFoundException: Could not load file or assembly 'System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51' or one of its dependencies. The system cannot find the file specified.
使用 Nuget 安装的 System.Threading.Tasks.Extensions 未加载到项目中。当我检查 System.Threading.Tasks.Extensions 引用的属性时,dll 文件存在于该位置。我还尝试使用 gacutil 将 System.Threading.Tasks.Extensions.dll 文件安装到程序集。我仍然遇到同样的错误。
如果您需要任何其他信息,请告诉我。
非常感谢任何帮助。
更新 Nuget 包
https://www.nuget.org/packages/System.Threading.Tasks.Extensions/
会解决你的问题
更新 Nuget 包对我不起作用。
什么有效? 在 app.config 需要更改
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
到
<bindingRedirect oldVersion="0.0.0.0-4.5.4" newVersion="4.5.4" />
当前版本 4.7.2 应该可以。
微软喜欢 ;)
就我而言,我在升级到 4.5.4 版后遇到了问题,并尝试了@user2713341 的回答。它没有用,但让我朝着正确的方向前进。
我的项目没有这个库的绑定,所以我添加了绑定并且它起作用了
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
成功了。
请注意,即使版本是 4.5.4,它也应该是 4.2.0.1。
尝试下载包并明确添加对您的项目的引用。应该可以,我刚刚解决了。
问题出在 *.csproj 文件中。对 System.Threading.Tasks.Extensions.4.5.4 的引用错误,因为此 dll 未加载。 从 lib 引用正确的框架版本文件夹后开始工作 旧参考:
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.2\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
corrected one:
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net472\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
请先清理 nuget 缓存,然后运行测试用例它会工作
@Keyjote 的回复对我来说是解决方案的根本,但我没有挑选程序集,而是能够重新安装。这似乎自动修复了 app.config 文件。
工具 -> Nuget 数据包管理器 -> 数据包管理器控制台
Update-Package -reinstall -Project <your project name>
这样您就不需要弄乱语法,也不必弄清楚 PublicKeyToken 值。
如果你想对整个解决方案都这样做,你可以省略-Project <>
参数。
我在尝试使用 Entity Framework 核心 (EFC) 版本 3.1.8 和程序包管理器控制台进行迁移时,在不同的上下文中遇到了错误。项目构建成功。
按照此线程中的建议尝试绑定重定向并(重新)安装不同版本的 System.Threading.Tasks.Extensions
以及 EFC(如其他地方所建议的)对我不起作用。
我设法通过
解决了问题- 删除我项目根目录中的
packages/
目录 - 使用手册 NuGet Package Restore(link 至 Microsoft Docs)通过 Visual Studio
我收到了类似的错误消息 - 但原因不同。在 NUGET 管理器设置的 packages.config 中有一个新版本的引用 - 但在项目引用中有一个旧版本的引用。解决方案——删除项目reference
中的ref我一直在为 bindingRedirect 苦苦挣扎。 我终于找到了解决我问题的真正陷阱。
我在 .net 4.8 中有一个 WCF 服务器项目,具体取决于 .net 标准 2.0 中的项目。
我正在更新引用项目中的 Nuget 包。 我有各种各样的问题,我不会在这里提及它们。
我在 web.config 中有 bindingRedirects。我不得不重新发现那些是不必要的,甚至可能是冲突的,因为它们会自动生成到 dll.config 中。有多个方面可以使这项工作发挥作用,请参阅别处。
但对我来说真正的难题是对于 IIS,我必须 LINK web.config 到 dll.config。后者是完整的 config-file,具有所有的 bindingRedirects,最终证明是有效的。