मैंने पढ़ा है कि आप सीएस 6.0 को CSharpCodeProvider के साथ संकलित नहीं कर सकते हैं और Roslyn के साथ करने का प्रयास करने के लिए। लेकिन मुझे एक अच्छा उदाहरण नहीं मिल रहा है कि फ़ाइल कैसे लोड करें और फिर इसे एक डीएलएल में संकलित करें।Roslyn प्रोग्रामेटिक रूप से एक सी # फ़ाइल संकलित कैसे करें?
मुझे रोज़लिन के साथ इस कोड के समान कुछ कैसे लिखना चाहिए? या क्या ऐसा करने का कोई और तरीका है? अब जब मैं उन फ़ाइलों को संकलित करने का प्रयास करता हूं जिनमें सी # 6.0 कोड वाली परियोजनाओं के संदर्भ शामिल हैं, तो बस "टाइप या नेमस्पेस नाम 'x' नामस्थान 'वाई' में मौजूद नहीं है (क्या आप एक असेंबली संदर्भ खो रहे हैं?)"
इसलिए मैं इसे बाद में लोड कर सकते हैं- लोड एक सी # फ़ाइल
- यह एक dll को संकलित करें:
public string CompileCode() { var provider = new CSharpCodeProvider(); var outputPath = Path.Combine(Path.GetDirectoryName(_path), $"Code.dll"); var compilerparams = new CompilerParameters(_referencedAssemblies, outputPath); CompilerResults results = provider.CompileAssemblyFromFile(compilerparams, _path); var dllPath = results.PathToAssembly; if (!results.Errors.HasErrors) return dllPath; PrintError(results.Errors); return ""; }
सारांश में मैं चाहता हूँ।
एक ही विषय पर एक और पोस्ट: [प्रोग्रामिंग रूप से सी # कोड संकलित करने और निष्पादित करने की कोशिश कर रहा है] (https://stackoverflow.com/q/10314815/4975230) – jrh