私はgoogle url shorter 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>
Microsoft BCLチームのブログから始めて、間違ったエントリを削除してapp.config
を整理することができます。
http://blogs.msdn.com/b/bclteam/p/asynctargetingpackkb.aspx(アーカイブ)
問題6
症状
ターゲットフレームワークが異なる別のプロジェクトで使用されているプロジェクトにNuGetパッケージを追加すると、次のような警告が表示される場合があります。
The primary reference "Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" could not be resolved because it has an indirect dependency on the framework Assembly "System.Runtime, Version=2.5.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.5". To resolve this problem, either remove the reference "Microsoft.Threading.Tasks, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" or retarget your application to a framework version which contains "System.Runtime, Version=2.5.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
The primary reference "Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" could not be resolved because it has an indirect dependency on the framework Assembly "System.Runtime, Version=2.5.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.5". To resolve this problem, either remove the reference "Microsoft.Threading.Tasks.Extensions, Version=1.0.12.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" or retarget your application to a framework version which contains "System.Runtime, Version=2.5.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
ソリューション
問題は、プラットフォームアセンブリの NuGetが誤ったバインディングリダイレクトを追加した であることです。それらを削除するには、警告の原因となったプロジェクトのapp.configを開き、強調表示されたエントリを削除してください[
*****
で示される]:
<?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>
解説:
.NET Framework 4.0のサポート終了後は、自分で非同期ターゲティングパックを使用する前によく考える必要があります。この依存関係がNuGetパッケージからのものである場合は、NuGetパッケージにそのような依存関係のない新しいバージョンがあるかどうかも確認する必要があります。
UWPプロジェクト(VS2015)で非常によく似た問題(「ファイルまたはアセンブリMicrosoft.Threading.Tasksをロードできませんでした。バージョン= 1.0.12.0」)があり、 Microsoft.Bcl.Asyncをインストールすることで解決しましたパッケージ NuGetから
私はまったく同じ問題を抱えていましたが、それはアセンブリMicrosoft.Rest.ClientRuntimeが原因でした。私の場合、Microsoft.Rest.ClientRuntimeへの参照に "Copy local = True"を設定するだけで済みました。