2015-02-05 103 views
0

我開始在使用僞選擇器的地方有一些例外:第一。當我在Visual Studio中將我的目標框架從4改爲4.5.1時,就開始發生這種情況。之前運行的代碼沒有任何錯誤。使用CsQuery的其他一切似乎都能正常工作。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 
+0

你能分享你的代碼嗎? – 2015-02-06 12:16:03

回答

1

如果在您的項目都是定製pseudoselectors這應該只發生,而另外兩個人具有相同的名稱。如果你只是使用直接的CsQuery,那麼我想不出爲什麼會發生這種情況。

CsQuery啓動時,默認情況下,它將掃描調用程序集中實現IPseudoSelector的類並嘗試註冊它。您可以禁用與此自定義pseudoselectors自動掃描(運行任何選擇前):如果您在實際使用自定義pseudoselectors你可以手動將其註冊爲好,詳見本博客文章

CsQuery.Config.StartupOptions = 0; 

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

我想不出爲什麼改變框架會導致這種情況發生,所以也許這只是一個巧合,但希望這會給你提供解決問題所需的信息。

0

是的,我有一個自定義的pseudoselector實現。這個問題現在似乎已經解決了。

問題發生在引用其中定義了僞選擇器的另一個項目的項目上。這兩個項目都引用了CSQuery,但版本不同。我用項目中發生問題的最新版本取代了舊版本(在定義了僞選擇器的項目中)。

現在看來一切都恢復了。

感謝您的幫助!