2016-04-24 19 views
0

をmscorlibていない:がアセンブリから型「System.Runtime.CompilerServices.ExtensionAttribute」をロードできませんでしたが、それは

"Could not load type 'System.Runtime.CompilerServices.ExtensionAttribute' from assembly 'Bridge, Version=1.0.1.30841, Culture=neutral, PublicKeyToken=null'." 

私はたくさんのを見つけましたこの属性についてのページは4.0から4.5まで動いていますが、.NET 4.6.1を実行していて、アセンブリを4.6.1にコンパイルしています。また、このエラーはmscorlibに関するものではなく、Bridgeという名前の自分自身を構築しているアセンブリに関するものです。なぜ私のアセンブリでSystem.Runtime.CompilerServices.ExtensionAttributeへの参照があるのか​​分かりません。私はそれを止めるために何をすべきか分かりません。助言?

答えて

0

"Bridge"はアセンブリの悪い名前かもしれません。ローカルのNuGetサーバーにブリッジがあるので、私はいくつかのプロジェクトでそれを使うことができます。デフォルトでVS 2013用に設定されたNuGetリポジトリの1つにBridge.NETがあります。

私は自分のソリューションで他のNuGetパッケージを更新していて、「すべて更新」ボタンを押したと思います。私のプロジェクトにはBridgeがあり、アップデートのリストにBridge.NETがありましたので、Bridge.NETのアセンブリは私のプロジェクトに含まれていましたが、私には知られていませんでした。私はプロジェクトをきれいにして再構築しましたが、それはbinフォルダからBridge.NETアセンブリを消去しませんでした。私はBridge.Html5.dllという名前のアセンブリを、私がそこにいるつもりはなかったフォルダに見ました。私はそれがBridge.NETの一部だと思う。 binフォルダを消去して再構築し、プロジェクトを実行しました。

0

Bridgeアセンブリを参照しているアセンブリが、net40を対象としている可能性があります。これは、少なくともnet45を対象とした場合の更新NuGetパッケージである場合

<package id="Newtonsoft.Json" version="5.0.8" targetFramework="net40" /> 

:それは、この例のようにNuGetパッケージである可能性があります。

FYI:この属性は、VB.NETで拡張メソッドを作成する場合に必要です。

ここは例です。

Imports System.Runtime.CompilerServices 

Module StringExtensions 

    <Extension()> 
    Public Function IsNullOrEmpty(ByVal value As String) As Boolean 

     IsNullOrEmpty = String.IsNullOrEmpty(value) 

    End Function 

End Module 
+0

良いアイデアですが、...そのアセンブリのパッケージまたはそのアセンブリ内の参照されているアセンブリのいずれかのtargetFramework = "net40"へのパッケージ参照はありません。いずれのアセンブリでも、CompilerServicesへの参照はありません。プロジェクトのAssembly.csで参照を削除しました。 –

+0

どのプロジェクトのAssembly.csファイルから正確に何を削除したのですか? 'Bridge'のAssembly.csファイルから何かを削除しましたか?それはあなたの問題を解決しましたか? – Gabor

+0

それは私の問題を解決しませんでした。私はAssembly.csファイルの先頭から "using CompilerServices"ステートメントを削除します。 Bridgeアセンブリには、CompilerServicesを参照する場所がありません。私はまだエラーが発生しています。これは主に、赤い稚魚を取り除くことでした。 –

関連する問題