Die ausführbare Compilerdatei csc.exe kann in der .NET 4.5 Azure-Bereitstellung nicht gefunden werden

8

Ich habe eine Seite, die war und funktioniert:

  • ASP.NET 4
  • MVC 3
  • Entity Framework 4.3
  • In einer Azure-Webrolle ausgeführt (ich bemerkte, dass es osFamily="1" war, was komisch ist, da ich erwartet hatte, dass es 2 ist - aber trotzdem ...)
  • Azure SDK 1.7

Ich habe meine gesamte Codebasis aktualisiert, um mit der Fülle neuer Spielzeuge auf dem neuesten Stand zu sein. So, jetzt ist es:

  • ASP.NET 4.5
  • MVC 4 (Razor 2)
  • Entitätsrahmen 5
  • Azure-Konfiguration auf osFamily="3"
  • gesetzt
  • Azure SDK 1.8 (mit Storage Client Library, die mühsam auf 2 und nicht auf 1.7 aktualisiert wurde)

Wenn ich im Staging auf die Site zugreife, bekomme ich einen gelben Bildschirm mit dem Hinweis, dass Compiler ausführbare Datei csc.exe nicht gefunden werden kann . Meine Frage ist Warum?

Es funktioniert auch im Release-Modus lokal. Ich habe remote in und die Instanzen laufen definitiv Windows Server 2012 (daher .NET 4.5 ?? Ich habe gesehen, es ist schwer zu sagen, seit .NET 4.5 ersetzt .NET 4 Assemblies in den. NET 4-Ordnern).

Nach den Antwort-Headern läuft definitiv IIS 8, aber interessant ist, dass X-ASPNET-VERSION 4.xxxx ist. Ist das für eine ASP.NET 4-Site normal?

UPDATE:

Ich habe das Framework .NET 4 ins Visier genommen und die osFamily auf 2 geändert und es funktioniert jetzt. Ich vermute jetzt, dass ich eine 3rd Party Assembly habe, die .NET 3.5 oder 2 verwendet (ich bin mir sicher, dass ich das tue), aber sicher, wenn ein .NET Framework höher als die in importierten Assemblies referenzierte Framework wird verwendet ??

osFamily="3" hat nur .NET 4 und 4.5 installiert, also denke ich, das ist der Grund für den Fehler, aber habe ich nicht recht mit der Targeting-Sache? Ich möchte osFamily="3" verwenden. Was kann ich hier tun?

Stapelverfolgung

%Vor%     
BritishDeveloper 12.11.2012, 11:58
quelle

4 Antworten

1

Okay David Ebbo wies mich in die richtige Richtung und ich begann Entity Framework Profiler zu untersuchen. Es gibt einen Thread hier darüber.

Etwas zum Erstellen einer Assembly zur Laufzeit und es scheint, dass osfamily="3" (Server 2012) das nicht zulässt (es funktionierte auf osfamily="2" (Server 2008 R2)). Ich werde nicht mehr debuggen, da ich den Profiler sowieso nicht in meiner Live-Umgebung haben möchte. Das Entfernen von EF Profiler hat es funktioniert.

    
BritishDeveloper 15.01.2013, 20:47
quelle
2

Ja, wenn Sie Server 2012 haben, führen Sie definitiv Fx 4.5 und nicht 4.0 aus, da es sich um ein direktes Upgrade handelt.

Um Ihre Frage fett zu beantworten, kann eine bestimmte ASP.NET-App immer nur ein Framework gleichzeitig verwenden. Wenn Sie als 4.5-Site ausgeführt werden, sollten alle 2.0 / 3.5-Assemblys genauso wie unter Framework 4.5 ausgeführt werden.

Also mein Verdacht ist, dass diese älteren Assemblies nicht die Wurzel Ihres Problems sind.

Damit kann ich das csc-Problem nicht erklären. Es kann helfen, die genaue Fehlermeldung, die Sie bekommen, sowie einige der Stack-Trace zu enthalten.

    
David Ebbo 14.01.2013 18:48
quelle
2

Ich hatte ähnliches Problem. Stellen Sie sicher, dass Sie auf den richtigen Compiler abzielen. Ich zielte auf v4.5 (aber es sollte v4.0 sein, da es jetzt 4.5 Compiler gibt)

Überprüfen Sie in web.config

%Vor%     
Tomasz Maj 31.03.2014 18:10
quelle
0

Ich poste das in der Hoffnung, dass es jemandem hilft. Wir haben Code mit der Version 2 des Frameworks dynamisch kompiliert und auf einem .net 4 only Server haben wir die Fehlermeldung erhalten. Es war einfach, weil wir die Framework-Version fest programmiert haben:

%Vor%

Es ging also nur darum, das zu entfernen - vermutlich so, dass es mit der jeweils aktuellen Version des Frameworks kompiliert wird.

%Vor%

Der Fehler besteht also nur darin, dass Code kompiliert werden muss, aber der Compiler für die erforderliche Framework-Version nicht vorhanden ist. Die andere Option bestand nur darin, sicherzustellen, dass die .net 3.5-Funktion installiert ist.

    
Action Dan 26.03.2017 23:31
quelle