Utilizzando Funzioni di Azure , posso fare riferimento e usare i pacchetti NuGet nella mia funzione C #?
Utilizzando Funzioni di Azure , posso fare riferimento e usare i pacchetti NuGet nella mia funzione C #?
Risposte:
Sì! Sebbene il portale di Funzioni di Azure non fornisca attualmente un meccanismo per aggiungere e gestire i pacchetti NuGet, il runtime supporta i riferimenti NuGet e si assicurerà che vengano usati correttamente durante la compilazione e l'esecuzione delle funzioni.
Per definire le dipendenze, è necessario creare un Project.json
file con i riferimenti al pacchetto NuGet richiesti. Ecco un esempio che aggiunge un riferimento alla Microsoft.ProjectOxford.Face
versione 1.1.0:
{
"frameworks": {
"net46":{
"dependencies": {
"Microsoft.ProjectOxford.Face": "1.1.0"
}
}
}
}
Il portale di Funzioni di Azure fornisce un modo conveniente per gestire i file di funzione, che possiamo usare per creare (o caricare) il nostro project.json
:
project.json
file creato in precedenza sulla tua macchinaproject.json
e definire i riferimenti del pacchetto (è possibile utilizzare l'esempio sopra come modello).Il processo di ripristino del pacchetto inizierà e dovresti vedere un output simile al seguente nella finestra di registro:
2016-04-04T19:02:48.745 Restoring packages.
2016-04-04T19:02:48.745 Starting NuGet restore
2016-04-04T19:02:50.183 MSBuild auto-detection: using msbuild version '14.0' from 'D:\Program Files (x86)\MSBuild\14.0\bin'.
2016-04-04T19:02:50.261 Feeds used:
2016-04-04T19:02:50.261 C:\DWASFiles\Sites\facavalfunctest\LocalAppData\NuGet\Cache
2016-04-04T19:02:50.261 https://api.nuget.org/v3/index.json
2016-04-04T19:02:50.261
2016-04-04T19:02:50.511 Restoring packages for D:\home\site\wwwroot\HttpTriggerCSharp1\Project.json...
2016-04-04T19:02:52.800 Installing Newtonsoft.Json 6.0.8.
2016-04-04T19:02:52.800 Installing Microsoft.ProjectOxford.Face 1.1.0.
2016-04-04T19:02:57.095 All packages are compatible with .NETFramework,Version=v4.6.
2016-04-04T19:02:57.189
2016-04-04T19:02:57.189
2016-04-04T19:02:57.455 Packages restored.
Come previsto, il runtime di Funzioni di Azure aggiungerà automaticamente i riferimenti agli assembly del pacchetto, quindi NON è necessario aggiungere esplicitamente riferimenti agli assembly utilizzando #r "AssemblyName"
, è sufficiente aggiungere le using
istruzioni richieste alla funzione e utilizzare i tipi definiti nel pacchetto NuGet che si ' ho fatto riferimento.
Poiché Funzioni di Azure si basa sui servizi app, in alternativa ai passaggi precedenti, hai anche accesso a tutte le ottime opzioni di distribuzione disponibili per le app Web di Azure standard (siti Web di Azure).
Ecco alcuni esempi:
Per gestire i file direttamente dal browser utilizzando l'Editor del servizio app (Monaco):
Function app settings
Go to App Service Settings
Tools
pulsanteOn
se non è già abilitato e clicca suGo
project.json
file nella cartella della funzione (la cartella che prende il nome dal file function.https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
file nella cartella (sulla griglia dei file)Una volta connesso (seguendo le istruzioni sopra) copia il tuo Project.json
file in/site/wwwroot/<function_name>
Per ulteriori opzioni di distribuzione, vedere: https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/
Se si abilita l'integrazione continua e si distribuisce la funzione con un project.json
file quando l'app per le funzioni non è in esecuzione, il ripristino del pacchetto avverrà automaticamente una volta inizializzata l'app per le funzioni. Si consiglia di non aggiungere il project.lock.json
file al controllo del codice sorgente.
Le funzioni possono anche essere distribuite come assembly precompilati e, in questo caso, tutta la gestione delle dipendenze viene gestita in Visual Studio. Questa opzione può essere usata come librerie di classi standard su qualsiasi versione di Visual Studio o utilizzando gli strumenti di Funzioni di Azure di Visual Studio 2017 .
function script root
tuo ultimo paragrafo? Capisco che sia dove project.json
si trova. È corretto?
project.json
trova nella cartella delle funzioni, che è una cartella figlia della radice dello script. La radice dello script viene mappata alla wwwroot
cartella in Azure.
Questo thread mi ha aiutato molto, ma ho comunque sprecato qualche ora cercando di far funzionare Project.json senza alcun risultato.
Se crei una funzione di Azure nella versione 2.x, devi farlo in un modo diverso.
Crea un nuovo file come indicato ma chiamalo function.proj . Questo file ha una struttura XML per l'importazione di librerie tramite Nuget.
Ecco il mio esempio di importazione dell'SDK Amazon S3 per .Net;
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AWSSDK.S3" Version="3.3.26.3"/>
<PackageReference Include="AWSSDK.Core" Version="3.3.29.1"/>
</ItemGroup>
</Project>
dopo averlo salvato, dovresti vedere l'aggiornamento della console che indica che i pacchetti vengono installati. Questo in realtà non è ben documentato e mi ci sono volute alcune ore per scoprirlo. Quindi spero che questo aiuti qualcuno.
Puoi usare i pacchetti Nuget in Funzioni di Azure. Il modo più semplice sarà usare Visual Studio 2017 15.4 dove è disponibile un modello per Funzioni di Azure. Segui i passaggi seguenti
1) Aggiungi progetto funzione Azure: fare clic con il tasto destro sulla soluzione e selezionare Aggiungi nuovo progetto. Vai all'opzione CLOUD lì troverai il progetto "Funzione Azure".
2) Ora è carino aggiungere qualsiasi pacchetto Nuget. Espandi "DIPENDENZE" e fai clic destro su di esso per selezionare l'opzione "Gestisci pacchetti Nuget". Apparirà la finestra di dialogo Pacchetto Nuget, selezionare qualsiasi pacchetto Nuget che si desidera installare. Vedi screenshot qui sotto
3) Ora pubblica la tua funzione Azure, Visual Studio si occuperà di tutte le impostazioni, ecc.
Questo metodo funzionerà solo se utilizzi Visual Studio 2017 15.4 o successivo, in caso contrario dovrai seguire altri modi come spiegato da altri.
Supponiamo di voler utilizzare il SFTP
client, che è una libreria esterna, archiviata da qualche parte in NuGet
.
A tale scopo, in base alla più recente specifica di Funzioni di Azure , eseguire le operazioni seguenti:
Apri la sezione dei file all'interno della funzione di Azure e aggiungi un nuovo file chiamato function.proj
.
Per ulteriori informazioni, fare riferimento alla documentazione Microsoft .
Al suo interno function.proj
metti il Nuget
riferimento al pacchetto usando la XML
struttura (lo stesso tipo di struttura che puoi trovare all'interno del *.csproj
file se crei un progetto locale con Visual Studio e installi qualche NuGet
pacchetto in esso).
Successivamente, includiamo il riferimento della libreria al progetto:
Ciò che è essenziale qui è che dovresti fornire un percorso completo alla libreria, come nell'esempio che puoi vedere è: "D:\home\site\wwwroot\bin\your_custom_library.dll"
Infine, apri la sezione Log e salva il codice. Dopo un po 'di tempo dovresti vedere i NuGet
pacchetti che ripristinano il registro.
Nota: questi log potrebbero apparire anche durante il salvataggio del function.proj
file o durante l'esecuzione del progetto.
Nel caso in cui la libreria appaia ancora come sconosciuta, provare ad aggiungerla Dll
manualmente nella cartella bin utilizzando Azure Cloud Explorer da Visual Studio .
function.proj
, la posizione per dll
viene visualizzata nella sezione Log dopo un certo periodo di tempo. A volte è necessario ricaricare nuovamente la pagina per la funzione Azure, a volte premere il pulsante "Esegui" per visualizzare l'installazione dei pacchetti NuGet e anche la posizione. Controlla cosa viene stampato nella sezione Log come posizione e prova a inserirlo.
Tieni presente che è supportato anche il nuovo formato .csproj in Visual Studio 2017. Se crei il tuo progetto come progetto Web ASPNET, il runtime di Funzioni di Azure scarica tutti i pacchetti nuget necessari prima di creare il tuo progetto.