0

疑似セレクター :first を使用する場合、いくつかの例外が発生し始めました。これは、Visual Studio でターゲット フレームワークを 4 から 4.5.1 に変更したときに発生し始めました。同じコードがエラーなしで以前に実行されました。CsQuery を使用する他のすべては、正常に機能し続けているようです。

私のプロジェクト参照には CsQuery.1.3.5.124 がありますが、バグである可能性があります。以前はうまくいきました。

助けはありますか?

ありがとう。

そこには

Stack trace:

[ArgumentException: The key already existed in the dictionary.]
   System.Collections.Concurrent.ConcurrentDictionary`2.System.Collections.Generic.IDictionary<TKey,TValue>.Add(TKey key, TValue value) +10940468
   CsQuery.Engine.PseudoSelectors.PopulateFromAssembly(Assembly assy, String[] nameSpaces) +344
   CsQuery.Engine.PseudoSelectors.Register(Assembly assembly) +153
   CsQuery.Engine.PseudoSelectors.PopulateInnerSelectors() +305
   CsQuery.Engine.PseudoSelectors..ctor() +168
   CsQuery.Engine.PseudoSelectors..cctor() +44

[TypeInitializationException: The type initializer for 'CsQuery.Engine.PseudoSelectors' threw an exception.]
   CsQuery.Engine.PseudoSelectors.get_Items() +0
   CsQuery.Engine.SelectorParser.AddPseudoSelector(String key) +49
   CsQuery.Engine.SelectorParser.Parse(String selector) +2360
   CsQuery.Engine.Selector..ctor(String selector) +103
   CsQuery.CQ.Select(String selector) +83
   CsQuery.CQ.get_Item(String selector) +42
4

2 に答える 2

1

これは、プロジェクトにカスタム疑似セレクターがあり、そのうちの 2 つが同じ名前である場合にのみ発生します。ストレート CsQuery を使用しているだけなら、なぜこれが起こるのかわかりません。

CsQuery が開始されると、既定では、呼び出し元のアセンブリをスキャンして、実装IPseudoSelectorし、登録を試みるクラスを探します。これを使用して、カスタム疑似セレクターの自動スキャンを無効にすることができます (セレクターを実行する前に)。

CsQuery.Config.StartupOptions = 0;

実際にカスタム疑似セレクターを使用している場合は、それらを手動で登録することもできます。詳細については、次のブログ投稿を参照してください。

http://blog.outsharked.com/2012/07/csquery-113-released.html

フレームワークを変更するとこれが発生する理由が思いつかないので、偶然かもしれませんが、問題を解決するために必要な情報が得られることを願っています.

于 2015-02-06T18:26:24.413 に答える
0

はい、カスタム疑似セレクターを実装しています。問題は修正されたようです。

この問題は、疑似セレクターが定義されている別のプロジェクトを参照するプロジェクトで発生していました。どちらのプロジェクトにも CSQuery への参照がありましたが、バージョンが異なりました。古いバージョン (疑似セレクターが定義されているプロジェクト内) を、問題が発生しているプロジェクト内の最新の同じバージョンに置き換えました。

これで、すべてが正常に戻ったようです。

ご協力いただきありがとうございます!!

于 2015-03-11T04:20:10.040 に答える