我有一个使用google url shortener API的WPF(.NET 4)项目,我已经通过nugget https://www.nuget.org/packages/Google.Apis.Urlshortener.v1/1.7.0.25-beta安装了客户端库
该应用程序在visual studio中工作正常,但一旦发布它会抛出异常 无法加载文件或程序集System.Threading.Tasks,Version = 2.5.19.0 此安装文件夹和所有其他程序集都存在于安装文件夹中,并随应用程序一起发布。我搜索了互联网,人们建议手动绑定app.config中的依赖库,它仍然无法正常工作,因为app.config中已经提到了我的所有依赖库,下面是我的app.config看起来像
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.10.0" newVersion="2.1.10.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-2.1.10.0" newVersion="2.1.10.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.2.13.0" newVersion="1.2.13.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Threading.Tasks.Extensions.Desktop" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-1.0.165.0" newVersion="1.0.165.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
答案 0 :(得分:10)
您可以从Microsoft BCL团队博客开始,通过删除错误的条目来清理app.config,
http://blogs.msdn.com/b/bclteam/p/asynctargetingpackkb.aspx
第6期
<强>症状强>
将NuGet包添加到另一个使用的项目时 使用不同目标框架的项目,您可能会看到警告 类似于以下内容:
主要参考“Microsoft.Threading.Tasks,Version = 1.0.12.0, Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a, processorArchitecture = MSIL“无法解析,因为它有一个 间接依赖于框架程序集“System.Runtime, Version = 2.5.19.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a“ 这在目前的目标框架中无法解决。 ” .NETFramework,版本= V4.5" 。要解决此问题,请删除 引用“Microsoft.Threading.Tasks,Version = 1.0.12.0, Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a, processorArchitecture = MSIL“或将您的应用程序重新定位到 框架版本,其中包含“System.Runtime,Version = 2.5.19.0, Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a“。
主要参考“Microsoft.Threading.Tasks.Extensions, Version = 1.0.12.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a, processorArchitecture = MSIL“无法解析,因为它有一个 间接依赖于框架程序集“System.Runtime, Version = 2.5.19.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a“ 这在目前的目标框架中无法解决。 ” .NETFramework,版本= V4.5" 。要解决此问题,请删除 引用“Microsoft.Threading.Tasks.Extensions,Version = 1.0.12.0, Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a, processorArchitecture = MSIL“或将您的应用程序重新定位到 框架版本,其中包含“System.Runtime,Version = 2.5.19.0, Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a“。
解决方案
问题是NuGet添加了错误的绑定重定向 平台组件。要删除它们,请打开app.config 导致警告并删除突出显示的项目 条目( StackOverflow不支持突出显示):
<?xmlversion="1.0"encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBindingxmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentityname="System.Runtime"publicKeyToken="b03f5f7f11d50a3a"culture="neutral" />
<bindingRedirectoldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentityname="System.Threading.Tasks"publicKeyToken="b03f5f7f11d50a3a"culture="neutral" />
<bindingRedirectoldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Lex Li的更新:
在.NET Framework 4.0生命周期结束时,您应该三思而后行 自己使用异步定位包。如果这种依赖来自 在NuGet包中,您还应该检查NuGet包是否有 没有这种依赖的新版本。
答案 1 :(得分:1)
我在UWP项目(VS2015)中遇到了一个非常类似的问题(&#34;无法加载文件或程序集Microsoft.Threading.Tasks,Version = 1.0.12.0&#34;)我通过安装来自NuGet的Microsoft.Bcl.Async package
答案 2 :(得分:0)
我遇到了完全相同的问题,但这是由程序集Microsoft.Rest.ClientRuntime引起的。 就我而言,我要做的就是在对Microsoft.Rest.ClientRuntime的引用上设置“ Copy local = True”。