Usando o Azure Functions , posso fazer referência e usar pacotes NuGet em minha função C #?
c#
azure
azure-functions
nuget-package
azure-web-app-service
Fabio Cavalcante
fonte
fonte
Respostas:
Sim! Embora o portal do Azure Functions não forneça atualmente um mecanismo para adicionar e gerenciar pacotes NuGet, o tempo de execução oferece suporte a referências NuGet e garantirá que sejam usadas corretamente ao compilar e executar suas funções.
Para definir suas dependências, você precisa criar um
Project.json
arquivo com as referências de pacote NuGet necessárias. Aqui está um exemplo que adiciona uma referência àMicrosoft.ProjectOxford.Face
versão 1.1.0:O portal do Azure Functions fornece uma maneira conveniente de gerenciar seus arquivos de função, que podemos usar para criar (ou carregar) nosso
project.json
:project.json
arquivo criado anteriormente em sua máquinaproject.json
e defina as referências do pacote (você pode usar o exemplo acima como um modelo).O processo de restauração do pacote começará e você deverá ver uma saída semelhante à seguinte na janela de registro:
Como esperado, o tempo de execução do Azure Functions adicionará automaticamente as referências aos assemblies de pacote, portanto, você NÃO precisa adicionar explicitamente referências de assembly usando
#r "AssemblyName"
, você pode apenas adicionar asusing
instruções necessárias à sua função e usar os tipos definidos no pacote NuGet que você ' ve referenciado.Opções adicionais de implantação
Como o Azure Functions é criado com base nos Serviços de Aplicativo, como alternativa às etapas acima, você também tem acesso a todas as ótimas opções de implantação disponíveis para os Aplicativos Web do Azure padrão (Sites do Azure).
aqui estão alguns exemplos:
Usando o App Service Editor (Monaco)
Para gerenciar seus arquivos diretamente de seu navegador usando o App Service Editor (Monaco):
Function app settings
Go to App Service Settings
Tools
botãoOn
se ainda não estiver ativado e clique emGo
project.json
arquivo na pasta da função (a pasta com o nome da função.Usando endpoint SCM (Kudu)
https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
arquivo na pasta (na grade de arquivos)FTP
Uma vez conectado (seguindo as instruções acima), copie seu
Project.json
arquivo para/site/wwwroot/<function_name>
Para opções adicionais de implantação, consulte: https://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/
Integração contínua
Se você habilitar a integração contínua e implantar sua função com um
project.json
arquivo quando seu aplicativo de funções não estiver em execução, a restauração do pacote acontecerá automaticamente assim que seu aplicativo de funções for inicializado. É recomendável que você não adicione seuproject.lock.json
arquivo ao controle de origem.Conjuntos pré-compilados
As funções também podem ser implantadas como assemblies pré-compilados e, neste caso, todo o gerenciamento de dependência é tratado no Visual Studio. Esta opção pode ser usada como bibliotecas de classes padrão em qualquer versão do Visual Studio ou usando as Ferramentas do Visual Studio 2017 Azure Functions .
fonte
function script root
seu último parágrafo? Eu entendo que é ondeproject.json
está localizado. Isso é correto?project.json
está em sua pasta de funções, que é uma pasta filha da raiz do script. A raiz do script é mapeada para suawwwroot
pasta no Azure.Este tópico me ajudou muito - mas ainda perdi algumas horas tentando fazer o Project.json funcionar - sem sucesso.
Se você criar uma função do Azure na versão 2.x, precisará fazer isso de uma maneira diferente.
Crie um novo arquivo conforme indicado, mas nomeie-o function.proj . Este arquivo possui uma estrutura XML para importação de bibliotecas via Nuget.
Aqui está meu exemplo importando o SDK do Amazon S3 para .Net;
ao salvá-lo, você deverá ver a atualização do console informando que os pacotes estão sendo instalados. Isso realmente não está bem documentado e levei algumas horas para descobrir isso. Espero que isso ajude alguém.
fonte
Você pode usar pacotes Nuget em suas Funções do Azure. A maneira mais fácil será usar o Visual Studio 2017 15.4, onde há um modelo para Azure Functions. Siga as etapas abaixo
1) Adicionar projeto de função Azure: clique com o botão direito na solução e selecione Adicionar novo projeto. Vá para a opção CLOUD, onde você encontrará o projeto "Azure Function".
2) Agora é bonito adicionar qualquer pacote Nuget. Expanda "DEPENDÊNCIAS" e clique com o botão direito sobre ele para selecionar a opção "Gerenciar Pacotes Nuget". A caixa de diálogo Pacote Nuget aparecerá, selecione qualquer pacote Nuget que deseja instalar. Veja a imagem abaixo
3) Agora publique sua função do Azure, o Visual Studio cuidará de todas as configurações, etc.
Este método funcionará apenas se você usar o Visual Studio 2017 15.4 ou superior, caso contrário, terá que seguir outros caminhos explicados por outros.
fonte
Vamos supor que queremos usar o
SFTP
cliente, que é uma biblioteca externa, armazenada em algum lugarNuGet
.Para fazer isso, de acordo com a especificação mais recente do Azure Functions , faça o seguinte:
Abra a seção de arquivos dentro do Azure Function e adicione um novo arquivo chamado
function.proj
.Para obter mais informações, consulte a documentação da Microsoft .
Dentro disso,
function.proj
coloque aNuget
referência do pacote usando aXML
estrutura (o mesmo tipo de estrutura que você pode encontrar dentro do*.csproj
arquivo se criar um projeto local com o Visual Studio e instalar algumNuGet
pacote nele).A seguir, vamos incluir a referência da biblioteca ao projeto:
O essencial aqui é que você forneça um caminho completo para a biblioteca, como no exemplo que você pode ver que é:
"D:\home\site\wwwroot\bin\your_custom_library.dll"
Por fim, abra a seção Logs e salve o código. Depois de algum tempo, você deverá ver o
NuGet
log de restauração de pacotes.Nota: esses logs também podem aparecer ao salvar o
function.proj
arquivo ou ao executar o projeto.Caso a biblioteca ainda apareça como desconhecida, tente adicioná-la
Dll
manualmente na pasta bin usando o Azure Cloud explorer do Visual Studio .fonte
function.proj
, o local dodll
é exibido na seção Logs após algum tempo. Às vezes, você precisa recarregar a página do Azure Function mais uma vez, às vezes aperte o botão "Executar" para ver a instalação dos pacotes NuGet e também o local. Verifique o que está imprimindo na seção Log como local e tente colocar isso.Observe que o novo formato .csproj no Visual studio 2017 também é compatível. Se você criar seu projeto como um projeto da Web ASPNET, o tempo de execução do Azure Functions baixará todos os pacotes nuget necessários antes de criar seu projeto.
fonte