Usando o Azure Functions , posso fazer referência e usar pacotes NuGet em minha função C #?
Usando o Azure Functions , posso fazer referência e usar pacotes NuGet em minha função C #?
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:
{
"frameworks": {
"net46":{
"dependencies": {
"Microsoft.ProjectOxford.Face": "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:
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.
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 as using
instruções necessárias à sua função e usar os tipos definidos no pacote NuGet que você ' ve referenciado.
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:
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.https://<function_app_name>.scm.azurewebsites.net
D:\home\site\wwwroot\<function_name>
Project.json
arquivo na pasta (na grade de arquivos)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/
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 seu project.lock.json
arquivo ao controle de origem.
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 .
function script root
seu último parágrafo? Eu entendo que é onde project.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 sua wwwroot
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;
<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>
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.
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.
Vamos supor que queremos usar o SFTP
cliente, que é uma biblioteca externa, armazenada em algum lugar NuGet
.
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 a Nuget
referência do pacote usando a XML
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 algum NuGet
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 .
function.proj
, o local do dll
é 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.