Kompilieren und Ausführen von Code zur Laufzeit in .Net Core 1.0

8

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)

    
Mottor 30.05.2016, 12:52
quelle

2 Antworten

15

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. ):

    %Vor%
  • Jetzt können Sie endlich Scripting verwenden:

    %Vor%
svick 30.05.2016, 17:28
quelle
8

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%     
Gary Holland 10.06.2016 03:57
quelle

Tags und Links