2015-02-05 3 views
0

У меня возникли некоторые исключения, когда использование псевдоселектора: во-первых. Это начало происходить, когда я изменил целевую структуру с 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

Вы можете поделиться своим кодом? –

ответ

1

Это должно произойти, только если есть собственное pseudoselectors в проекте, и далее два из них с тем же именем. Если вы просто используете прямой CsQuery, тогда я не могу понять, почему это произойдет.

Когда CsQuery запускается, по умолчанию он будет сканировать вызывающую сборку для классов, которые реализуют IPseudoSelector, и попытаться зарегистрировать его. Вы можете отключить автоматическое сканирование пользовательского pseudoselectors с этим (перед запуском любых селекторов):

CsQuery.Config.StartupOptions = 0; 

Если вы на самом деле с помощью пользовательского pseudoselectors вы можете зарегистрировать их вручную, а также, увидеть этот блог для деталей:

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

Я не могу придумать причины, по которым изменение фреймворков приведет к тому, что это произойдет, поэтому, возможно, это просто совпадение, но, надеюсь, это даст вам информацию, необходимую для решения проблемы.

0

Да, у меня есть пользовательский псевдоселектор. Сейчас проблема исправлена.

Проблема заключалась в проекте, который ссылается на другой проект, в котором определяется псевдоселектор. Оба проекта имели ссылки на CSQuery, но разные версии. Я заменил более старую версию (в проекте, где определяется псевдоселектор), с той же самой версией, что и у меня в проекте, где возникает проблема.

Теперь кажется, что все в порядке.

Спасибо за помощь!

Смежные вопросы