VB.NET 3.5; компилятор жалуется на обнуляемые типы (как в Double?) с ошибкой «BC30037: символ недопустим». - PullRequest
0 голосов
/ 05 августа 2009

Visual studio только что начала выдавать «error BC30037: Character is not valid.» мне (при проверке веб-сайта), где бы я ни использовал оператор nullable где-нибудь в одном из моих проектов VB.NET 3.5. Это случилось с коллегой несколько месяцев назад, но он не помнит, как он это исправил.

Например, если я изменяю каждый экземпляр Double? на Nullable(Of Double), он просто прекрасно компилируется, и другое использование значений NULL в других проектах в том же решении продолжает работать просто отлично.

Я попытался очистить решение, закрыть Visual Studio, удалить временные файлы ASP.NET и перезапустить Visual Studio безрезультатно.

Что-нибудь еще, что я мог попробовать?

Сложение:

Я подумал, что упомяну, что синтаксис делегата также не работает. У меня есть этот кусок кода:

Dim hasSkips As Boolean = payments.Where(Function(p) p.Code = "SKIP").Count > 0
Dim isRegular As Boolean = Not hasSkips

payments является IList(Of Payment). У объекта Payment есть строковое свойство с именем Code. В Visual Studio нет ошибок проверки или чего-либо видимого, что заставляет его думать, что он не знает, что делает эта строка кода. Intellisense работает просто отлично, но компилятор соответствует синтаксису. Следующие две ошибки сопровождают две вышеуказанные строки кода, соответственно:

error BC30201: Expression expected.
error BC30451: Name 'hasSkips' is not declared.

Казалось бы, Visual Studio ничего не знает о возможностях VB.NET 3.5, о которых он должен знать.

Ответы [ 3 ]

2 голосов
/ 12 августа 2009

Я понял это. В проекте веб-сайта необходимо указать, какую версию компилятора использовать, даже после выбора версии на страницах свойств. Добавил это в мой web.config исправил проблему:

<system.codedom>
    <compilers>
        <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
            <providerOption name="CompilerVersion" value="v3.5"/>
            <providerOption name="OptionInfer" value="true"/>
            <providerOption name="WarnAsError" value="false"/>
        </compiler>
    </compilers>
</system.codedom>

Ну, приятно знать, наверное.

1 голос
/ 15 декабря 2011

У меня тоже была эта проблема - но она была вызвана повреждением файла проекта - каким-то образом была задана страница ASPX для компиляции ....

А компиляция страницы Aspx как VB означает, что открывающие символы <% @ 'недопустимы ... </p>

Пришлось выгрузить проект - найти запись обидчика и удалить ее.

0 голосов
/ 05 августа 2009

Я второй ответ Андрея. Удвоить? это синтаксис C #, он не существует в VB. VB использует Nullable (Of Double).

...