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

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

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

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

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

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

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

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

Ответ 1

Ошибка, которую вы, ребята, получаете из библиотеки Jurassic, которая используется Chirpy Add-In.

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

В источниках Jurassic перейдите в каталог Jurassic\Compiler\Binders и откройте файл 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) && 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);
}

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

Я должен признать, что я точно не знаю, почему вы получаете "фатальную ошибку" или как проблема может быть исправлена. Это потребует немалых усилий по тестированию/отладке. Кто-нибудь?

Во всяком случае, не вините Resharper! Это отличное программное обеспечение; -)

Ответ 2

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

Перейдите в меню "Сервис" > "Параметры" > "Чирпы" > "CssLint"

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

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

Ответ 3

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

#exposeMask{.visibility:hidden;}

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

Ответ 4

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

Я зашел в Инструменты > Параметры, затем Chirpy > CssLint и снял флажок "Запустить CSS Lint". Тада! Больше ошибок.

Ответ 5

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