2009-08-05 3 views
0

Visual studio a commencé à me lancer "error BC30037: Character is not valid." (lors de la validation d'un site web) partout où j'ai utilisé l'opérateur nullable n'importe où dans un de mes projets VB.NET 3.5. C'est arrivé à un collègue il y a quelques mois, mais il ne se souvient pas comment il l'a réparé. Par exemple, si je change chaque instance de Double? en Nullable(Of Double), il compile très bien, et d'autres utilisations de nullables dans d'autres projets dans la même solution continuent à fonctionner correctement.VB.NET 3.5; compilateur se plaindre des types Nullable (comme dans Double?) avec "Erreur BC30037: Caractère n'est pas valide."

J'ai essayé de nettoyer la solution, en fermant Visual Studio, en supprimant les fichiers temporaires ASP.NET et en redémarrant Visual Studio en vain.

Autre chose que je pourrais essayer?

AJOUT:

Je pensais que je voudrais mentionner que la syntaxe des délégués est également défaillante. J'ai ce morceau de code:

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

payments est un IList(Of Payment). L'objet Payment possède une propriété de chaîne appelée Code. Il n'y a aucune erreur de validation ou quoi que ce soit de visible dans Visual Studio qui le fait penser qu'il ne sait pas ce que fait cette ligne de code. Intellisense fonctionne très bien, mais le compilateur correspond à la syntaxe. Les deux erreurs suivantes accompagnent les deux lignes ci-dessus de code, respectivement:

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

Il semblerait presque comme si Visual Studio n'a pas connaissance des caractéristiques VB.NET 3.5, il est censé connaître.

+0

Pas que cela * soit * important, mais site Web ou projet d'application Web? –

+0

Ceci est un site web _site_ project –

Répondre

2

Je l'ai compris. Le projet de site Web doit être indiqué quelle version du compilateur utiliser, même après avoir choisi la version dans les pages de propriétés. Ajouté à mon web.config résolu le problème:

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

Eh bien, bon à savoir je suppose.

+0

@Downvoter: Vous voulez expliquer? –

-1

Je seconde la réponse d'Andrew. Double? est la syntaxe C#, elle n'existe pas dans VB. VB utilise Nullable (Of Double).

+1

Vous avez aussi tort que Andrew est ;-) –

1

J'ai eu ce problème aussi - mais il a été causé par une corruption dans le fichier de projet - certains comment la page .aspx a été mis à compiler ....

et la compilation d'une page ASPX comme moyen VB que les caractères d'ouverture '<% @' ne sont pas valides ...

Doit décharger le projet - trouver l'entrée fautive et l'effacer.

Questions connexes