Wie erhalten Sie .NET Core-Projekte zum Kopieren von NuGet-Referenzen zum Erstellen von Ausgaben?

Ich versuche, ein Plugin-System mit .NET Core zu schreiben, und eine meiner Anforderungen ist es, die Plugin-DLL zusammen mit ihren Abhängigkeiten dem Benutzer für die Installation zu verteilen. Ich kann jedoch nicht herausfinden, wie ich meine NuGet-Abhängigkeiten als Build-Artefakte dotnet publish und sie in den Build-Ordner ausgeben kann, ohne dotnet publish als Hack verwenden zu müssen. Gibt es eine Möglichkeit, dies im csproj anzugeben?

Sie können dies zu einer in Ihrer csproj-Datei hinzufügen, um das Kopieren von NuGet-Assemblies in die integrierte Ausgabe zu erzwingen:

 true 

Beachten Sie jedoch, dass die Build-Ausgabe ( bin/Release/netcoreapp*/* ) nicht portabel und verteilbar sein soll, die Ausgabe von dotnet publish ist. Aber in Ihrem Fall ist das Kopieren der Assemblies in die Build-Ausgabe wahrscheinlich sehr nützlich für Testzwecke. Beachten Sie jedoch, dass Sie die DependencyContext API auch zum Auflösen der DLLs und ihrer Speicherorte verwenden können, die Teil des Abhängigkeitsdiagramms der Anwendung sind, anstatt ein lokales Verzeichnis aufzuzählen.

Sie können PostBuildEvent verwenden, um die Modulbereitstellung beim Build zu automatisieren.

Um NuGet-Assemblies im Build-Ordner zu erhalten, fügen Sie csproj Ihres Moduls hinzu

  true  

Definieren Sie, welche Moduldateien Sie verwenden möchten, indem Sie Include / Exclude verwenden (ändern Sie den Pfad nach Bedarf)

     

Setzen Sie Ihren Build-Ordner auf den Standardwert zurück und fügen Sie PostbuildEvent hinzu

      

Ich verwende app_offline, um die App zu recyceln, wenn sie bereits ausgeführt wird, um Fehler bei der Verwendung von Dateien zu vermeiden.