: si riferisce a un insieme obsoleto di strumenti core .net costruiti attorno a project.json, questa domanda e le sue risposte sono di utilità molto limitata negli attuali strumenti di rete .net come Visual Studio 2017+.Creare un singolo progetto di origine con interi gruppi .net, PCL e dotnet core creati dalla stessa origine C#?
utilizzando Visual Studio 2015, l'aggiornamento 3, sto cercando di scoprire gli attuali limiti che esistono, che mi avrebbe impedito di fare il seguente:
Per un singolo C# base di codice, compilare una .net completa versione framework e una versione PCL e una libreria di classi core .net dalle stesse origini.
Solution dir
solutiondir\
conterrà una directorysrc\
che contiene unprojectdir\
(Solutiondir\src\projectdir
).Projectdir
conterrà un HelloWorldPCL libreria classe che è costruito come un progettoclassic .net PCL
, e con altri obiettivi struttura del sito.Dalla stessa
Projectdir
stesso HelloWorldPCL saranno anche elaborate per.net 4.6
progetto.Dalla stessa
Projectdir
stesso HelloWorldPCL saranno anche elaborate per.net core
.Tutte le assemblee di uscita di cui sopra saranno condividere l'accesso ad un unico insieme di codice C# che possono avere alcuni
#if DOTNET
e#if NET46
e#if PCL
definisce condizionali di gestire le cose che non sono disponibili in vari quadri/ambienti.
Finora posso fare la maggior parte di quanto sopra, ma quando cerco di avere la Projectdir
contenere un .net core
artefatto come project.json
o HelloWorldCore.xproj
, l'IDE mi dà molti errori se provo a creare distinte .csproj
e .xproj
progetti nella stessa cartella, in modo che non sia la strada giusta da percorrere.
Con un lavoro .csproj
progetto quando introduco un .xproj
e un project.json
su disco, ma non abbiamo aggiunto questi per la soluzione di per sé, sono solo seduto lì sul disco accanto alle Fonti vero progetto, ottengo un pacchetto Nuget ripristinare l'errore, che può essere fatto solo per andare via eliminando il file project.json
, quindi chiaramente non è possibile avere un .csproj
in una directory di progetto e avere anche una cartella project.json
. È necessario scegliere tra la modalità project.json
(stile di progetto .net core
) e la modalità .csproj
(stile di progetto C# classico).
ho costruito una base di codice "spezzato" che dimostra l'impossibilità di utilizzare una cartella contenente sia un .csproj
e project.json
e poi cercando di costruire il progetto csproj
e project.json
senza interferire:
https://bitbucket.org/wpostma/helloworldcoreandpcl
Domanda: c'è QUALSIASI modo per creare un progetto da un singolo set di file sorgente C# e avere come target un assembly completo .net 4.6
e anche una libreria di classi nativa .net core
e anche un PCL come sembly che potrebbe indirizzare un particolare profilo .net?
Obiezione: Si può giustamente chiedere "? Non si dovrebbe semplicemente usare un PCL e hanno fatto con esso, e dimenticare il targeting pieno .net o la creazione di un separato dll biblioteca .net core
di classe". Forse se il codice potesse essere compilato una sola volta, da una singola fonte, senza alcuna definizione condizionale e senza alcuna differenza di funzionalità e se le limitazioni imposte da un PCL "netstandard n." approccio al profilo minimo fossero sufficienti, si potrebbe . Ma per quanto riguarda i casi in cui non è nemmeno possibile?
È necessario disporre di un processo di compilazione elaborato in cui è possibile copiare file di progetto o spostare il codice sorgente, al fine di ottenere il singolo file di destinazione .cs
più nerdvana? O sto trascurando soluzioni alternative?
Aggiornamento: Sembra ci sia un problema con l'IDE di Visual Studio che si impedisce di aggiungere direttamente un riferimento a una libreria di classi nella soluzione, quando si genera con un project.json
invece di utilizzare un .csproj
. Tuttavia la soluzione qui sotto specificata da Jon indica che è necessario creare il progetto, quindi creare un pacchetto di nuget con dotnet pack
. Se si guarda la mia demo modificata qui, è possibile che il file pack.cmd contenga i passaggi che ho usato per impacchettare un pacchetto nuget e quindi "pubblicarlo" localmente su un feed nuget di file (directory locale) per uso personale.
Per un esempio più concreto si consideri questo codebase in cui sto cercando di creare destinazioni native della libreria di classi core .net, su un codebase che attualmente ha due soluzioni PCL e full-net che fanno due terzi di quello che volevo fare nella domanda sopra ... https://github.com/wpostma/fhir-net-api –
Perché ci sono tre diversi file di progetto? Penso che tu possa fare tutto questo con un solo 'project.json' che supporta i tre diversi framework. (E puoi anche avere diverse opzioni di compilazione per i diversi framework ...) –
Vedere https://stackoverflow.com/questions/36148363 per qualche aiuto con il targeting PCL da project.json –