Неустранимая ошибка, невозможно продолжить: метод ‘ToStringJS’ не является универсальным

#visual-studio-2010

#visual-studio-2010

Вопрос:

В течение последних нескольких дней каждый раз, когда я компилирую свое решение (веб-приложение MVC 3 несколько других проектов) Я получаю эту ошибку в списке ошибок:

Fatal error, cannot continue: The method 'ToStringJS' is not generic (Site.css, line 1, column 1).

Поскольку ошибка связана с файлом css, очевидно, я могу запустить проект.

Я не вижу ошибок в файле css.

Даже если я удаляю все содержимое файла css, я продолжаю получать эту ошибку.

Однако подсветка кода исчезла, в то время как intellisense и ReSharper продолжают работать.

Я не уверен, где искать эту проблему (поиск в Google не принес никакого результата, ни Stack Exchange, ни другие конкретные сайты). Возможно, это проблема с повторной обработкой, но у меня есть реальные способы обвинить R #, поэтому я хотел бы начать отсюда, прежде чем связываться с ними.

Комментарии:

1. Я тоже вижу проблему, но у меня не установлен resharper. Однако у меня установлен chirpy — а у вас?

2. Нет, насколько я знаю. По крайней мере, это исключает ReSharper.

3. у меня такая же проблема… поэтому я добавил награду к вашему вопросу..

4. У меня такая же проблема, также установлен chirpy.

Ответ №1:

Ошибка, которую вы, ребята, получаете, исходит из библиотеки Jurassic, которая используется надстройкой Chirpy.

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

В источниках Jurassic перейдите в JurassicCompilerBinders каталог и откройте JSBinder.cs файл. Проблемы возникают в protected override void GenerateStub(ILGenerator generator, int argumentCount) методе, который сам используется для генерации другого метода … yadayadayada. Это довольно сложно.

В любом случае. Вот код из этого файла, который отвечает за ошибки, которые вы получаете:

 // Line 156 (Change Set df266524321d)
// Convert to the target type.
EmitTypeConversion(generator, typeof(object), argument.Type);

if (argument.Type != typeof(ObjectInstance) amp;amp; inheritsFromObjectInstance == true)
{
   // EmitConversionToObjectInstance can emit null if the toType is derived from ObjectInstance.
   // Therefore, if the value emitted is null it means that the "thisObject" is a type derived
   // from ObjectInstance (e.g. FunctionInstance) and the value provided is a different type
   // (e.g. ArrayInstance).  In this case, throw an exception explaining that the function is
   // not generic.
   var endOfThrowLabel = generator.CreateLabel();
   generator.Duplicate();
   generator.BranchIfNotNull(endOfThrowLabel);
   generator.LoadArgument(0);
   EmitHelpers.EmitThrow(generator, "TypeError", string.Format("The method '{0}' is not generic", binderMethod.Name));
   generator.DefineLabelPosition(endOfThrowLabel);
}
  

Если вы хотите копнуть немного глубже, вы можете взглянуть на JurassicLibraryArrayArrayInstance.cs и JurassicLibraryObjectObjectInstance.cs где public static string ToStringJS(ScriptEngine engine, object thisObject) реализован. Также в библиотеке Chirpy CSSLint.cs файл содержит немного интересных строк кода (места, где используется Jurassic).

Должен признать, я не знаю точно, почему вы получаете «неустранимую ошибку» или как проблему можно исправить. Для этого потребуется немало усилий по тестированию / отладке. Кто-нибудь?

В любом случае, не вините Resharper! Это отличное программное обеспечение 😉

Комментарии:

1. Эй, я не виню R #: это потрясающий инструмент, и их поддержка также великолепна 😉 О Chirpy / Jurassic, прежде чем открыть этот вопрос, я даже не знал, что это такое. Действительно, он у меня установлен, но я не помню, почему или когда я его установил. Прямо сейчас мне не нужны его функции, поэтому я могу свободно удалить его и решить проблему.

2. Я был бы рад помочь в тестировании, но проблема исчезла за последние 2-3 недели. Единственное, что изменилось в моей среде, — это версия Parallels Desktop, которую я использую (да, я Mac, но я должен использовать Windows для работы ;): я не могу поверить, что проблема вызвана этим Parallels 🙂

Ответ №2:

Проблема связана с CSSLint. Вы можете либо загрузить исходный код и попытаться его исправить, либо просто отключить его.

Перейдите в меню Инструменты> Параметры> Chirpy> CSSLint

Снимите флажок ‘Запустить CSS Lint’.

Если вы столкнулись с той же проблемой с JS, отключите также JSHint

Комментарии:

1. Точно, на какую среду вы ссылаетесь? В VS2010: Tools -> Option не содержит элемента «Chirpy» В R # есть как инструменты, так и параметры, но не Tools-> Options Это две среды, о которых я могу подумать, но я полагаю, вы говорите о чем-то совершенно другом.

2. Отключил его, все еще происходит. 🙁

3. @rball: проблема заключается в синтаксической ошибке. Смотрите ответ ScottCate. В моем случае это было в результате написания: 35x вместо 35px

Ответ №3:

У меня была эта проблема, и я решил ее, исправив некоторые недопустимые css. в моем случае недопустимый css был (обратите внимание на неуместную точку?)

 #exposeMask{.visibility:hidden;}
  

После исправления опечатки все вернулось к жизни.

Комментарии:

1. 1 Хорошая находка! В моем случае дизайнер шаблонов веб-сайта вводил какие-то странные символы, отличные от ascii, в CSS как часть их «классной» подписи дизайнера (что-то вроде ascii art, но с символами вне набора символов ascii). Несмотря на то, что они были частью комментариев, эти нечетные символы были проблемой. Удаление символов, отличных от ascii, решило проблему! Я запускаю Chirpy 2.

2. Отлично, у меня есть css-файл с 1320 строками с проблемой. Стон. Позвольте мне поискать иглу…

3. Теперь, если бы Chirpy мог только сказать вам, где находится исходная строка для ToStringJS ошибки — это было бы потрясающе!

4. В моем случае это было в результате записи width: 35x вместо width: 35px

Ответ №4:

Возможно, я немного опоздал на вечеринку, но я только что установил надстройку Chirpy в Visual Studio 2010 и почти сразу начал сталкиваться с этими ошибками.

Я зашел в Tools> Options, затем Chirpy> CSSLint и снял флажок «Запустить CSS Lint». Tada! Больше ошибок нет.

Ответ №5:

Любой, кто сталкивается с этим исключением, пожалуйста, вернитесь к своему представлению (представлениям) и удалите или удалите разделы с комментариями в представлении (представлениях). Почему, когда представление компилируется с комментариями, которые содержат разметку handlebarjs «{{** что-то}} **», тогда компилятор шаблонов Jurassic будет иметь проблемы с компиляцией, вызывая исключение такого типа. Да, я знаю, это сбивает с толку!!