VB.NET 3.5; compilador quejándose de tipos anulables (como en Double?) con & # 8220; error BC30037: el carácter no es válido. & # 8221;

StackOverflow https://stackoverflow.com/questions/1235187

Pregunta

Visual Studio acaba de comenzar a arrojar " error BC30037: el carácter no es válido. " en mí (al validar un sitio web) donde sea que haya usado el operador anulable en cualquier lugar dentro de uno de mis proyectos VB.NET 3.5. Esto le sucedió a un colega hace unos meses, pero no recuerda cómo lo arregló.

Por ejemplo, si cambio cada instancia de Double? a Nullable (Of Double) , se compila muy bien y otros usos de nulables en otros proyectos en el la misma solución continúa funcionando bien.

He intentado limpiar la solución, cerrar Visual Studio, eliminar los archivos temporales de ASP.NET y reiniciar Visual Studio en vano.

¿Algo más que pueda probar?

ADDITION:

Pensé que mencionaría que la sintaxis de delegado también está fallando. Tengo este fragmento de código:

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

pagos es una IList (Of Payment) . El objeto Payment tiene una propiedad de cadena llamada Code . No hay errores de validación ni nada visible en Visual Studio que lo haga pensar que no sabe qué hace esa línea de código. Intellisense funciona bien, pero el compilador encaja con la sintaxis. Los siguientes dos errores acompañan a las dos líneas de código anteriores, respectivamente:

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

Casi parecería que Visual Studio no tiene conocimiento de las características de VB.NET 3.5 que se supone que debe conocer.

¿Fue útil?

Solución

Lo descubrí. El proyecto del sitio web debe recibir instrucciones sobre qué versión del compilador usar, incluso después de elegir la versión en las páginas de propiedades. Agregué esto a mi web.config solucionó el problema:

<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>

Bueno, es bueno saberlo, supongo.

Otros consejos

También tuve este problema, pero fue causado por una corrupción en el archivo del proyecto, de alguna manera la página .aspx se configuró para compilarse ...

Y compilar una página Aspx como VB significa que los caracteres '<% @' iniciales no son válidos ...

Tuve que descargar el proyecto: busque la entrada ofensiva y elimínela.

Secundo la respuesta de Andrew. ¿Doble? es la sintaxis de C #, no existe en VB. VB utiliza Nullable (de doble).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top