Compilateur fichier exécutable csc.exe ne peut pas être trouvé .NET 4.5 déploiement Azure
J'ai un site qui était et travaux:
- ASP.NET 4
- MVC 3
- Entity Framework 4.3
- Cours d'exécution dans un Azure web de rôle (j'ai remarqué que c'était osFamily="1" ce qui est bizarre que j'attendais 2 - mais de toute façon...)
- Azure SDK 1.7
J'ai mis à jour ma base de code entier pour être à jour avec la pléthore de nouveaux jouets. Alors maintenant, c'est:
- ASP.NET 4.5
- MVC 4 (Rasoir 2)
- Entity Framework 5
- Azure config ensemble de osFamily="3"
- Azure SDK 1.8 (avec Stockage de la Bibliothèque du Client minutieusement mis à niveau à 2 pas 1.7)
Lorsque je visite le site dans la mise en scène, je reçois un jaune d'écran de la mort en disant Compilateur fichier exécutable csc.exe ne peut pas être trouvé. Ma question est Pourquoi?
Il fonctionne très bien en local, en mode Release. Je distants et les instances sont certainement exécutant Windows Server 2012 (donc .NET 4.5?? Je l'ai vu il est difficile de dire depuis .NET 4.5 remplace .NET 4 assemblages dans le .NET 4 dossiers).
Selon les en-têtes de réponse, il est certainement exécutant IIS 8 mais intéressant qu'il prétend X-ASPNET-VERSION 4.xxxx. Est-ce normal pour un ASP.NET 4 site?
Mise à JOUR:
J'ai entrepris de le .NET 4 cadre et changé le osFamily à 2 et il fonctionne maintenant. Donc maintenant, je soupçonne que j'ai un 3ème partie de l'assemblée qui l'utilise .NET 3.5 ou 2 (enfait je suis certain que je n') mais sûrement lorsque vous ciblez un .NET framework plus élevés que ceux référencés dans les assemblées de la version supérieure du cadre est-il utilisé??
osFamily="3" seulement .NET 4 et 4.5 est installé, donc je suppose que c'est la raison de l'erreur, mais je ne suis pas à droite sur le ciblage chose? Je veux utiliser osFamily="3" que puis-je faire ici?
Trace de la pile
[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
OriginalL'auteur BritishDeveloper | 2012-11-12
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème. Assurez-vous que vous ciblez bon compilateur.
J'ai été ciblage v4.5 (mais il n'y shoul être v4.0 comme il est aujourd'hui de 4,5 compilateur)
Dans le web.config vérifier
OriginalL'auteur Tomasz Maj
Oui, si vous avez Server 2012, vous êtes certainement en cours d'exécution Fx 4.5 4.0 pas, que c'est une mise à niveau sur place.
Pour répondre à votre question en gras, un ASP.NET app pouvez utiliser seulement un cadre à la fois. Si vous êtes en cours d'exécution comme un 4,5 site, toute 2.0/3.5 assemblées devrait aller comme sous framework 4.5.
Donc, mon soupçon est que ces anciennes assemblées sont pas la racine de votre problème.
Cela étant dit, je ne peux pas expliquer le scc question. Il pourrait être utile d'inclure le message d'erreur exact que vous allez obtenir, ainsi que certains de la trace de la pile.
Ah oui, la pile est intéressant, comme nous le voyons, le scc n'est pas lancé par ASP.NET mais par HibernatingRhinos. Et je vois que vous avez trouvé un thread sur leur forum concernant ce ce. Merci pour les points de prime 🙂
David Ebon! Vous me Sauver! J'ai aussi HibernatingRhinos qui génèrent moi cette erreur! Merci!!!!
OriginalL'auteur David Ebbo
Ok David Ebon m'a orienté dans la bonne direction et j'ai commencé à l'examen de l'Entité Cadre Profiler. Il y a un thread ici à ce sujet.
Quelque chose au sujet de la création d'une assemblée au moment de l'exécution, et il semblerait osfamily="3" (Server 2012) l'habitude de permettre que (il a travaillé sur osfamily="2" (Server 2008 R2)). Ne va pas pour déboguer plus que cela, car je ne veux pas le profiler sur mon environnement direct, de toute façon. Retrait EF Profiler fait le travail.
OriginalL'auteur BritishDeveloper
Je poste ceci dans l'espoir que cela aide quelqu'un. Nous avons été dynamiquement compiler le code avec la version 2 du framework et sur un .net 4 seul serveur, nous avons obtenu le message d'erreur. C'était tout simplement parce que nous avons codé en dur le cadre version:
Donc, c'était juste une question de suppression qui, probablement, de sorte qu'il compile avec n'importe quelle version du cadre est en cours d'utilisation.
Donc l'erreur est sur le point de code qui ont besoin d'être compilé, mais le compilateur pour le framework version n'est pas présent. L'autre option était juste pour s'assurer .net 3.5 est installé.
OriginalL'auteur Action Dan