2012-11-12 18 views
8

ich eine Website haben .NET 4.5 Azure Deployment gefunden werden, die war und arbeitet:Compiler ausführbare Datei csc.exe nicht

  • ASP.NET 4
  • MVC 3
  • Entity Framework 4.3
  • Laufen in einer Azure Web-Rolle (i bemerkt, es war osFamily = "1", was seltsam ist, wie ich es erwartete 2 zu sein - aber trotzdem ...)
  • Azure SDK 1.7

Ich habe meine gesamte Codebase aktualisiert, um auf dem neuesten Stand mit der Fülle von neuen Spielzeugen zu sein. So, jetzt ist es:

  • ASP.NET 4.5
  • MVC 4 (Razor 2)
  • Entity Framework 5
  • Azure Konfigurationssatz osFamily = "3"
  • Azure SDK 1.8 (mit Storage-Client-Bibliothek sorgfältig zu 2 nicht 1.7) aktualisiert

Wenn ich die Seite in der Inszenierung Zugriff erhalte ich einen gelben Schirm des Todes sagen Compiler ausführbare Datei csc.exe kann nicht gefunden werden. Meine Frage ist Warum?

Es funktioniert lokal, auch im Release-Modus. Ich remotete 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 Antwortheadern läuft es 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 die .NET 4 Framework gezielt und verändert die osFamily 2 und es funktioniert jetzt. So vermute ich 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 höheres Targeting als die in importierten Assemblies referenzierten .NET-Framework die höhere Version des Frameworks ist benutzt??

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

Stapelüberwachung

[InvalidOperationException: Compiler executable file csc.exe cannot be found.] 
    System.CodeDom.Compiler.RedistVersionInfo.GetCompilerPath(IDictionary`2 provOptions, String compilerExecutable) +8675071 
    Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters options, String[] fileNames) +739 
    Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch(CompilerParameters options, String[] sources) +3293761 
    Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options, String[] sources) +64 
    HibernatingRhinos.Profiler.Appender.Util.GenerateAssembly.Compile(String fileName, String[] sources, IEnumerable`1 assembliesToReference) +1252 
    HibernatingRhinos.Profiler.Appender.Util.GenerateAssembly.CompileAssembly(IEnumerable`1 sourcesResources, IEnumerable`1 assembliesToReference, String assemblyName) +118 
    HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.SetupDatabaseDefaultConnectionFactoryIfNeeded() +929 
    HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.SetupEntityFrameworkIntegration() +80 
    HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.Initialize(EntityFrameworkAppenderConfiguration configuration) +47 
    HibernatingRhinos.Profiler.Appender.EntityFramework.EntityFrameworkProfiler.Initialize() +73 
    Web4.MvcApplication.Application_Start() +17 

[HttpException (0x80004005): Compiler executable file csc.exe cannot be found.] 
    System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +12864673 
    System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +175 
    System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +304 
    System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +404 
    System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +475 

[HttpException (0x80004005): Compiler executable file csc.exe cannot be found.] 
    System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +12881540 
    System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159 
    System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +12722601 

Antwort

1

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

Etwas über das Erstellen einer Assembly zur Laufzeit und es würde scheinen, osfamily = "3" (Server 2012) wird das nicht zulassen (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.

2

Ja, wenn Sie Server 2012 haben, sind Sie auf jeden Fall laufen Fx 4.5 und nicht 4.0, da es sich um ein direktes Upgrade ist.

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 Baugruppen sind nicht die Wurzel Ihres Problems.

Das gesagt, ich kann das csc Problem nicht erklären. Es kann hilfreich sein, die genaue Fehlermeldung, die Sie bekommen, sowie einige der Stack-Traces mit einzuschließen.

+0

Danke David. Okay, mein Verdacht stimmt mit der .NET-Version, aber jetzt sind mir die Ideen ausgegangen. Ich habe den Stack Trace wie gefragt hinzugefügt. Ich merke, Hibernating Rhinos Zeug so frage mich, ob es mit EF Prof. zu tun ist Ich kann nicht sehen, warum, aber ich kann versuchen, loszuwerden – BritishDeveloper

+2

Ah ja, der Stapel ist interessant, wie wir sehen, CSC wird nicht von ASP.NET gestartet aber von HibernatingRhinos. Und ich sehe, dass Sie einen Thread in ihrem Forum gefunden haben, der dies betrifft. Danke für die Bounty Punkte :) –

+0

David Ebbo! Du rettest mich! Ich habe auch HibernatingRhinos, die mir diesen Fehler erzeugen! Danke! –

2

Ich hatte ähnliches Problem. Stellen Sie sicher, dass Sie auf den richtigen Compiler abzielen. Ich war Targeting v4.5 (aber es shoul v4.0 sein, da es jetzt 4,5 Compiler)

In web.config Check

<system.web> 
<compilation debug="true" defaultLanguage="c#" optimizeCompilations="true" targetFramework="4.0"> 
</system.web> 
0

ich dies in der Hoffnung bin Entsendung, dass es jemand hilft . Wir haben Code dynamisch mit der Version 2 des Frameworks kompiliert und auf einem .net 4 only Server haben wir die Fehlermeldung erhalten. Es war einfach, weil wir hart, um die Framework-Version codiert:

var provider = new CSharpCodeProvider(new Dictionary<String, String> { { "CompilerVersion", "v3.5" } }); 

So davon war nur eine Frage, dass das Entfernen - vermutlich, damit es mit kompiliert, was auch immer Version des Frameworks ist zur Zeit im Einsatz.

var provider = new CSharpCodeProvider(); 

So ist der Fehler nur über Code aber der Compiler für die erforderliche Framework-Version nicht vorhanden zu erstellenden benötigen ist. Die andere Option bestand nur darin, sicherzustellen, dass die .net 3.5-Funktion installiert ist.

Verwandte Themen