4 Stimmen

Fehler bei der Verwendung von 'var' nach dem Upgrade auf Visual Studio 2010

Wir haben vor kurzem ein Upgrade von VS2008 auf VS2010 durchgeführt.

Unser Projekt lässt sich gut kompilieren, aber wenn wir die Webanwendung ausführen wollen, erhalten wir beim Öffnen der Datei Default.aspx folgende Fehlermeldung:

Serverfehler in der Anwendung '/'. Kompilierungsfehler Beschreibung: Ein Fehler trat während der Kompilierung einer Ressource, die zur Bearbeitung dieser Anfrage. Bitte überprüfen Sie die folgenden spezifischen Fehlerdetails und ändern Sie Ihren Quellcode entsprechend.

Compiler-Fehlermeldung: CS0246: Der Typ oder Namespace-Name 'var' konnte nicht gefunden werden (fehlt Ihnen eine using Anweisung oder eine Assembly-Referenz?)

Wenn Sie die Seite öffnen und mit der Maus über die "var"-Deklaration fahren, erkennt VS2010 korrekt, dass es sich bei dem Typ um eine RegEx handelt.

Ich denke, dass während des Upgrades entweder in der web.config oder in der machine.config etwas Merkwürdiges passiert sein könnte.

Ist noch jemandem dieses Problem schon einmal untergekommen? Jede Hilfe würde sehr geschätzt werden, hoffentlich kann es mir einige Zeit Tauchen in diesen Dateien zu speichern.

EDIT: Hier ist der relevante Abschnitt des Codes, der sich aufbläht:

Line 10:    protected void valSearchFreeText_ServerValidate(object source, ServerValidateEventArgs args)
Line 11:    {
Line 12:        var url = new Regex(@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?", RegexOptions.IgnoreCase);
Line 13:        var html = new Regex(@"[<,>]", RegexOptions.IgnoreCase);
Line 14:        args.IsValid = !html.IsMatch(args.Value) && !url.IsMatch(args.Value);

Ich glaube nicht, dass .NET 4.0 die Ursache ist; wir haben nur von VS2008 auf VS2010 aktualisiert; wir haben nicht von .NET 3.5 auf .NET 4.0 migriert

Ich werde den ASP.NET Development Server im Vergleich zu IIS noch einmal überprüfen und die Ergebnisse in ein paar Minuten nachreichen. Es ist definitiv aus dem Development Server geworfen werden.

Bearbeiten 2 Dies wird sowohl vom Entwicklungsserver als auch von IIS ausgelöst. System.Xml.Linq ist auch im Abschnitt assemblies unserer web.config enthalten:

<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

0 Stimmen

Erhalten Sie dieses Problem, wenn Sie die Webanwendung auf dem IIS- oder Entwicklungsserver ausführen?

0 Stimmen

Bitte zeigen Sie die entsprechenden Abschnitte des Codes, damit wir "var" im Kontext sehen können.

0 Stimmen

Sie haben doch die Anweisung "using System.Linq", oder?

5voto

zinglon Punkte 1898

Überprüfen Sie Ihre web.config-Datei auf die configuration/system.codedom/compilers/compiler Knoten. Es sollte ein providerOption Kindknoten, der die zu verwendende Compiler-Version bestimmt. Er sollte wie folgt aussehen <providerOption name="CompilerVersion" value="v3.5"/> . Es klingt so, als stünde bei Ihnen 2,0 statt 3,5.

0 Stimmen

Das war's. Unser Entwickler, der für die Migration verantwortlich war, verschob diese von der web.config-Datei auf Anwendungsebene in die web.config-Datei auf Maschinenebene. Die aktualisierte web.config auf Maschinenebene hat es nie in unsere Entwicklungsumgebung geschafft. Durch das Hinzufügen dieser Datei wurde alles behoben.

3voto

Tim Lloyd Punkte 37154

Ist der zugehörige Anwendungspool in IIS auf die Verwendung des .Net 4-Frameworks eingestellt?

0 Stimmen

Ich glaube nicht, dass es das ist. Wir haben nur ein Upgrade von VS2008 auf VS2010 durchgeführt. Wir haben nicht von .NET 3.5 auf .NET 4.0 migriert.

0voto

VoodooChild Punkte 9666

Stellen Sie sicher, dass das Ziel-Framework auf 3.5 oder höher eingestellt ist. Vergewissern Sie sich auch, dass Sie eine gute web.config-Datei im Stammordner der Anwendung haben (kopieren Sie die empfohlene web.config und benennen Sie sie um).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X