2016-07-21 8 views
4

I Gemeinsam genutzte Projekt Projekt haben, die einige Inhaltsdateien wie JSON etc. enthältasp.net Kern und einschließlich der gemeinsamen Content-Dateien

Ich habe eine Reihe von ASP.Net Kernprojekte und ich möchte include/teilen einige dieser JSON-Dateien. Sehr einfach mit der "Link to File" -Option in VS, aber es ist nicht in ASP.Net Core-Projekten verfügbar.

Ich habe versucht, mit dem buildOptions/copyToOutput wie folgt zu spielen, aber das scheint nicht zu funktionieren und kein Fehler oder Warnung im Build-Prozess protokolliert.

"copyToOutput": { 
    "include": [ "../Common.Includes/mysettings*.json" ] } 

Irgendwelche Ideen dankbar angenommen?

Dank

Donal

Antwort

0

Die copyToOutput Einstellung für mich gut funktioniert (zumindest in dotnet 1.0.0-preview3-003171 unter Windows). Beachten Sie jedoch, dass copyToOutput is not transitive - was bedeutet, wenn die Dateien in Projekt A kopiert werden, werden sie nicht kopiert, um in Projekt B, dass Projekt A Projekt.

Eine andere Methode besteht darin, das zugrunde liegende Dateisystem zu verwenden und eine symbolische Verknüpfung zu der freigegebenen Datei oder dem Ordner zu erstellen. Unter Linux wäre es:

> ln -s ../Common.Includes common 

Windows verfügt über eine ähnliche (aber weniger häufig verwendete) Funktion:

> mklink /J common ..\Common.Includes 

Sie können dann dotnet so konfigurieren, dass auf einem bestimmten Ereignis ausgeführt werden soll:

"scripts": { 
    "precompile": "cmd /C mklink /J common ..\\Common.Includes" 
} 

In RC1 gab es auch Ereignisse wie 'vorbereiten' oder 'prestore', die wool d ist besser dafür geeignet, aber für jetzt they're gone und dotnet unterstützt nur 'vorkompilieren' und 'postcompile'.

Es wird noch besser sein, diesen Befehl in ein separates Skript zusammen mit einer Logik zu setzen, um zu überprüfen, ob die Verbindung bereits existiert.

if (!(Test-Path "common")) { 
    cmd /C mklink /J "common" "..\Common.Includes" 
} 

Dann verweisen Sie von "Skripte":

"scripts": { 
    "precompile": "init.ps1" 
} 
+0

Hallo QBIK, Dank für die Zeit nehmen, um gemeinsam eine solche consise Antwort auf Windows, würde ich init.ps1 Powershell-Skript erstellen . Ich habe die Vorschau 2 Sdk und Tools installiert - meine Version ist 1.0.0-preview2-003121. Und ich laufe von VS2015. Mein Versionskontrollsystem ist VSTS/TFS und von dem, was ich gelesen habe, glaube ich nicht, dass symbolische Links und TFS perfekt zusammen funktionieren. So bleibt eine Art von Kopiervorgang über Skripte. Ich könnte warten, bis v1 der Tools, um zu sehen, ob es funktioniert, und wenn nicht gehen Sie den Skriptansatz. Danke Donal –

+0

@DonalMcWeeney: 'copyToOutput' funktioniert auch in' 1.0.0-preview2-003121' (ich überprüfte). Beachten Sie jedoch, dass diese Dateien in das Verzeichnis * bin/Debug/netcoreapp1.0 * (oder etwas Ähnliches, abhängig von den Projekteinstellungen) kopiert werden, sodass Sie sie nicht in VS sehen können. – qbik

+0

Als Skript-Ansatz: Ich empfehle, die symlink (* common * Verzeichnis in der Antwort oben) zu ignorieren Dateien in der Versionskontrolle, so wird es nicht eingecheckt werden (in git wäre es ein Eintrag in * .gitignore * Ich bin mir nicht sicher, wie [Verzeichnis in TFS ignorieren] (http://stackoverflow.com/questions/922798/how-to-ignore-files-directories-in-tfs-for-avoiding-them-to- Go-to-Central-Quelle)). Auf diese Weise vermeiden Sie Doppelarbeit in VCS und es sollte immer noch auf den Maschinen anderer Entwickler funktionieren - der Symlink wird beim Build automatisch neu erstellt. – qbik