Ist es möglich, c # -Code zur Laufzeit in dem neuen .Net Core (besser .Net Standard Platform) zu kompilieren und auszuführen? Ich habe einige Beispiele gesehen (.Net Framework), aber die verwendeten NuGet-Pakete gibt es
nicht kompatibel mit netcoreapp1.0 (.NETCoreApp, Version = v1.0)
Option # 1 Verwenden Sie den vollständigen C # -Compiler, um eine Assembly zu kompilieren, laden Sie sie und führen Sie eine Methode daraus aus.
Dies erfordert die folgenden Pakete als Abhängigkeiten in Ihrem Projekt.json:
%Vor%Dann können Sie Code wie folgt verwenden:
%Vor%Option # 2 : Verwenden Sie Roslyn Scripting. Dies führt zu viel einfacherem Code, erfordert aber derzeit mehr Setup:
Erstellen Sie NuGet.config, um Pakete aus dem nächtlichen Roslyn-Feed zu erhalten:
%Vor%Fügen Sie das folgende Paket als eine Abhängigkeit zu project.json hinzu (beachten Sie, dass dies ein Paket von heute ist, benötigen Sie in Zukunft eine andere Version):
%Vor% Sie müssen auch dotnet
(veraltetes "Target Framework Moniker", ) importieren, das trotzdem von Roslyn verwendet wird. ):
Jetzt können Sie endlich Scripting verwenden:
%Vor%Einfach nur zur @svick Option eine Antwort hinzufügen. Wenn Sie die Assembly im Speicher behalten möchten (anstatt in eine Datei zu schreiben), können Sie die folgende Methode verwenden:
%Vor%Dies ist anders als in Net451, wo der Code ist:
%Vor%Mein Code zielt sowohl auf Net451 als auch auf Netstandard ab, daher musste ich Direktiven verwenden, um dieses Problem zu umgehen. Das vollständige Codebeispiel ist hier:
%Vor%Tags und Links c# .net-core .net-core-rc2