2009-08-05 8 views
0

Visual Studio hat gerade begonnen, "error BC30037: Character is not valid." bei mir (während der Validierung einer Website) zu werfen, wo immer ich den NULL-Operator irgendwo in einem meiner VB.NET 3.5-Projekte verwende. Dies ist einem Kollegen vor einigen Monaten passiert, aber er erinnert sich nicht, wie er es repariert hat.VB.NET 3.5; Compiler beschweren sich über Nullable Typen (wie in Double?) mit "Fehler BC30037: Character is not valid."

Zum Beispiel, wenn ich jede Instanz von Double? zu ändern, kompiliert es gut, und andere Verwendung von NULL in anderen Projekten in der gleichen Lösung funktionieren weiterhin gut.

Ich habe versucht, die Lösung zu säubern, Visual Studio zu schließen, die temporären ASP.NET-Dateien zu löschen und Visual Studio ohne Erfolg neu zu starten.

Alles andere, was ich versuchen könnte?

ADDITION:

Ich dachte ich, dass Delegierten Syntax auch erwähnen würde versagt. Ich habe dieses Stück Code:

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

payments ist ein IList(Of Payment). Das Objekt Payment verfügt über eine Zeichenfolgeneigenschaft namens Code. Es gibt keine Validierungsfehler oder irgendetwas, das in Visual Studio sichtbar ist, das es denkt, dass es nicht weiß, was diese Codezeile tut. Intellisense funktioniert gut, aber der Compiler hat eine Übereinstimmung mit der Syntax. Die folgenden zwei Fehler begleiten die beiden oben genannten Codezeilen jeweils:

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

Es wäre fast scheinen, als ob Visual Studio keine Kenntnis von den VB.NET 3.5 Features hat es angenommen hat, um zu wissen.

+0

Nicht dass es * wichtig * sein sollte, aber Website oder Webanwendungsprojekt? –

+0

Dies ist ein Web _site_ Projekt –

Antwort

2

Ich fand es heraus. Das Website-Projekt muss angewiesen werden, welche Version des Compilers verwendet werden soll, auch nachdem Sie die Version auf den Eigenschaftenseiten ausgewählt haben. Hinzugefügt zu meinem web.config behoben das Problem:

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

Nun, gut zu wissen, denke ich.

+0

@Downvoter: Pflege zu erklären? –

-1

Ich zweite Andrew's Antwort. Doppelt? ist C# -Syntax, es existiert nicht in VB. VB verwendet Nullable (Of Double).

+1

Sie sind so falsch wie Andrew ist ;-) –

1

ich dieses Problem auch hatte - aber es wurde von einer Korruption in der Projektdatei verursacht - einige, wie die ASPX-Seite erstellt wird, wurde eingestellt ....

Und Kompilieren eine Aspx Seite als VB bedeutet, dass die öffnenden '<% @' Zeichen sind ungültig ...

Hatte das Projekt zu entladen - finde den störenden Eintrag und lösche ihn.