2012-11-12 11 views
8

मैं एक साइट है जो था और काम करता है:संकलक निष्पादन योग्य फ़ाइल Csc.exe में नहीं पाया जा सकता है .NET 4.5 Azure तैनाती

  • ASP.NET 4
  • MVC 3
  • इकाई की रूपरेखा 4.3
  • एक Azure वेब भूमिका में चल रहा है (मैंने देखा कि यह osFamily था = "1" जो अजीब है के रूप में मैं यह उम्मीद 2 होने के लिए - लेकिन वैसे भी ...)
  • Azure एसडीके 1.7

मैंने अपने पूरे कोडबेस को नए खिलौनों के साथ अद्यतित करने के लिए अपग्रेड किया है। तो अब यह है:

  • ASP.NET 4.5
  • MVC 4 (उस्तरा 2)
  • इकाई की रूपरेखा 5
  • Azure config osFamily को सेट = "3"
  • Azure एसडीके 1.8 (के साथ भंडारण क्लाइंट लाइब्रेरी बड़ी मेहनत से 2 नहीं 1.7) करने के लिए उन्नत

जब मैं मचान में साइट पर पहुँच मैं मौत के एक पीले रंग की स्क्रीन संकलक निष्पादन योग्य फ़ाइल कह मिल csc.exe नहीं मिला। मेरा प्रश्न क्यों है?

यह रिलीज मोड में भी स्थानीय रूप से ठीक काम करता है। मैंने रिमोट किया है और उदाहरण निश्चित रूप से विंडोज सर्वर 2012 चल रहे हैं (इसलिए .NET 4.5 ?? मैंने देखा है कि .NET 4.5 .NET 4 फ़ोल्डर्स में .NET 4 असेंबली को प्रतिस्थापित करता है) के बाद से यह कहना मुश्किल है।

प्रतिक्रिया शीर्षकों के मुताबिक यह निश्चित रूप से आईआईएस 8 चला रहा है लेकिन दिलचस्प यह दावा करता है कि एक्स-एस्पनेट-संस्करण 4.xxxx है। क्या यह ASP.NET 4 साइट के लिए सामान्य है?

अद्यतन:

मैं नेट 4 ढांचे को निशाना बनाया और 2 के लिए osFamily बदल गया है और अब यह काम करता है। तो अब मुझे संदेह है कि मेरे पास एक तृतीय पक्ष असेंबली है जो .NET 3.5 या 2 का उपयोग करती है (वास्तव में मैं निश्चित हूं कि मैं करता हूं) लेकिन निश्चित रूप से आयातित असेंबली में संदर्भित लोगों की तुलना में एक .NET ढांचे को लक्षित करते समय ढांचे का उच्च संस्करण है उपयोग किया गया??

osFamily = "3" में केवल .NET 4 और 4.5 स्थापित है इसलिए मुझे लगता है कि यह त्रुटि का कारण है, लेकिन क्या मैं लक्ष्यीकरण चीज़ के बारे में सही नहीं हूं? मैं osFamily = "3" का उपयोग करना चाहता हूं मैं यहाँ क्या कर सकता हूं?

स्टैक ट्रेस

[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 

उत्तर

1

ठीक है डेविड इबो ने मुझे सही दिशा में इंगित किया और मैंने इकाई फ्रेमवर्क प्रोफाइलर की जांच शुरू कर दी। इसके बारे में here धागा है।

रनटाइम पर एक असेंबली बनाने के बारे में कुछ और यह प्रतीत होता है कि "3" (सर्वर 2012) यह अनुमति नहीं देगा (यह osfamily = "2" (सर्वर 2008 आर 2) पर काम करता है)। इसके अलावा अब मैं डीबग नहीं करूँगा क्योंकि मैं अपने लाइव वातावरण पर प्रोफाइलर नहीं चाहता हूं। ईएफ प्रोफाइलर को हटाने से यह काम करता है।

2

हाँ, यदि आप सर्वर 2012 है, तो आप निश्चित रूप से Fx 4.5 और नहीं 4.0 चला रहे हैं, के रूप में यह जगह उन्नयन में एक है।

बोल्ड में अपने प्रश्न का उत्तर देने के लिए, एक दिया गया ASP.NET ऐप केवल एक समय में एक ढांचे का उपयोग कर सकता है। यदि आप 4.5 साइट के रूप में चल रहे हैं, तो किसी भी 2.0/3.5 असेंबली को फ्रेमवर्क 4.5 के तहत चलाना चाहिए।

तो मेरा संदेह यह है कि उन पुराने असेंबली आपकी समस्या की जड़ नहीं हैं।

कहा जा रहा है, मैं सीएससी मुद्दे की व्याख्या नहीं कर सकता। यह आपके द्वारा प्राप्त होने वाले सटीक त्रुटि संदेश के साथ-साथ कुछ स्टैक ट्रेस शामिल करने में सहायता कर सकता है।

+0

धन्यवाद डेविड। ठीक है मेरे संदेह .NET संस्करण के बारे में सही हैं लेकिन अब मैं विचारों से बाहर हूं। मैंने पूछा के रूप में स्टैक ट्रेस जोड़ा है। मुझे लगता है कि हाइबरनेटिंग राइनो सामान इतनी आश्चर्यजनक है कि अगर यह ईएफ प्रोफेसर के साथ है तो मैं नहीं देख सकता हूं कि क्यों मैं इसे छुटकारा पाने का प्रयास कर सकता हूं – BritishDeveloper

+2

आह हाँ, स्टैक दिलचस्प है क्योंकि हम देखते हैं कि सीएससी एएसपी.नेट द्वारा लॉन्च नहीं किया जा रहा है लेकिन HibernatingRhinos द्वारा। और मुझे लगता है कि आप इस मंच से संबंधित अपने मंच पर एक धागा मिला है। बक्षीस बिंदुओं के लिए धन्यवाद :) –

+0

डेविड एबो! आप मुझे बचा लीजिए! मैंने हाइबरनेटिंग भी किया है जो मुझे यह त्रुटि उत्पन्न करता है! धन्यवाद! –

2

मुझे इसी तरह का मुद्दा था। सुनिश्चित करें कि आप सही कंपाइलर को लक्षित कर रहे हैं। मैं v4.5 को लक्षित किया गया था (लेकिन v4.0 हो shoul के रूप में वहाँ अब 4.5 संकलक है)

web.config जांच में

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

मैं आशा में इस पोस्टिंग कर रहा हूँ कि यह किसी मदद करता है । हम फ्रेमवर्क के संस्करण 2 के साथ कोड को गतिशील रूप से संकलित कर रहे थे और केवल .NET 4 सर्वर पर हमें त्रुटि संदेश मिला। यह बस गया था क्योंकि हम मुश्किल कोडित ढांचा संस्करण:

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

तो यह है कि दूर करने का मामला था - शायद इसलिए इसके साथ ढांचे के जो भी संस्करण समय में उपयोग में है संकलित करता है।

var provider = new CSharpCodeProvider(); 

तो त्रुटि केवल संकलित करने की आवश्यकता के बारे में कोड है, लेकिन आवश्यक फ्रेमवर्क संस्करण के लिए कंपाइलर मौजूद नहीं है। दूसरा विकल्प यह सुनिश्चित करने के लिए था कि नेट 3.5 सुविधा स्थापित है।

संबंधित मुद्दे