Ho un progetto scritto principalmente in F # che utilizza un componente scritto in C#. Sta crescendo bene su Windows con Visual Studio e su Linux e OS X usando Makefiles.Lingue miste e sottoprogetti con .NET Core
Sto provando a portarlo a .NET Core, che ha il proprio sistema di compilazione, dotnet build
. Ho difficoltà a replicare la gestione del progetto nidificata dei miei sistemi di generazione esistenti al suo interno. Cioè, voglio creare la DLL C#, quindi creare e collegare il progetto eseguibile F # ad esso.
Ho provato a fare a meno di DLL, ma ogni file project.json
può apparentemente solo fare riferimento a file in una lingua. Se si tenta di aggiungere un file C# all'elenco di un file di progetto F # compileFiles
, dotnet build
si lamenta che non è possibile compilare Foo.cs
con fsc
.
Il mio progetto C# si trova in una sottodirectory del progetto F #, che prende il nome dallo spazio dei nomi che implementa, quindi ho creato un nuovo progetto .NET Core C# DLL in quella directory, ma ora non vedo come legare i due progetti insieme.
La funzione dependencies
di project file format non sembra risolvere questo tipo di problema. Se il progetto DLL è in Foo/Bar
e implementa lo spazio dei nomi Foo.Bar
, dotnet restore
non riesce a trovare con questo riferimento dipendenza:
"dependencies": {
...other stuff...
"Foo.Bar": "*"
},
A quanto pare è solo cercare NuGet per le dipendenze. Non voglio spedire il componente a NuGet puramente in modo che lo possa trovare dotnet restore
.
Non voglio utilizzare bin
syntax per fare riferimento alla DLL costruita perché ciò richiederebbe un build a 2 passaggi e un terzo file project.json
. (Uno per il progetto F #, uno per il progetto C# e uno per fare riferimento alla DLL costruita.) Anche allora, non vedo ancora come legare il primo progetto al terzo.
Sicuramente c'è un modo semplice per avere un albero di build nidificato con dotnet build
?