无法加载文件或程序集System.Threading.Tasks,Version = 2.5.19.0

时间:2014-01-19 08:40:35

标签: c# .net wpf google-api url-shortener

我有一个使用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>

3 个答案:

答案 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”。