Réponse correcte pour le projet Azure Functions .NET Core 2.0 / .NET Standard 2.0 dans Visual Studio 2017 lorsque vous avez installé Azure Functions Core Tools 2.x Runtime via NPM
J'ai suivi la réponse de @ahmelsayed et en particulier, les commentaires de @ravinsp pour les commentaires sur .net core 2.0. Bien que très utiles et m'ayant mis sur la bonne voie, cela n'a pas fonctionné pour moi sans une modification cruciale et non intuitive, donc j'ajoute une nouvelle réponse.
TL;DR;
Si vous avez utilisé NPM pour installer Azure Functions Core Tools 2.x Runtime, alors vous devrez peut-être définir Project/Properties/Debug/Application Arguments sur :
C:\Users\\AppData\Roaming\npm\node_modules\azure-functions-core-tools\bin\func.dll host start --port 8888 --pause-on-error
La réponse longue suit...
Ma configuration
Pendant cet exercice, ma configuration est entièrement à jour (au moment de l'écriture) et comme suit :
- Visual Studio 2017 Professional : 15.6.2
- Outils Azure Functions and Web Job : 15.0.40215.0
- Windows 10 10.0.16299 Build 16299
-
Azure Functions Core Tools (installé selon le document Develop and run Azure functions locally de Microsoft) affiche (dans Git Bash) :
me@MYDESKTOP ~ $ func Azure Functions Core Tools (2.0.1-beta.24) Function Runtime Version: 2.0.11587.0
Pour ce que ça vaut, l'onglet Paramètres de l'application Functions pour cette application Functions sur Azure indique :
Version de runtime : 2.0.11587.0 (beta)
Mon problème
Lorsque j'exécute mon projet de fonctions (sans arguments d'application), j'obtiens ceci dans la sortie de la console :
[17/03/2018 21:06:38] Starting Host (HostId=MYMACHINE, Version=2.0.11353.0, ProcessId=
Listening on http://localhost:7071/
Cela en soi pourrait ne pas être un problème, mais j'ai des problèmes ennuyeux de type "ça marche sur ma machine, ça échoue lors de la publication sur Azure", donc je veux m'assurer que l'exécution locale utilise le même runtime de fonctions qu'Azure (c'est-à-dire 2.0.11587.0 qui, selon les notes de configuration ci-dessus, est/devrait être bon, n'est-ce pas ?)
Ainsi, sur la base des instructions de @ravinsp, j'ai exécuté une recherche sur mon lecteur C pour localiser Azure.Functions.Cli.dll - il n'y en a qu'un seul, et il se trouve à C:\Users\\AppData\Local\Azure.Functions.V2.Cli\2.0.1-beta\Azure.Functions.Cli.dll
ce qui est très cohérent avec la réponse de @ravinsp.
J'ai donc ajouté les arguments d'application suivants dans Projet/Propriétés/Débogage :
C:\Users\\AppData\Local\Azure.Functions.V2.Cli\2.0.1-beta\Azure.Functions.Cli.dll host start --port 8888 --pause-on-error
puis j'ai bien obtenu le port 8888, mais le runtime est bizarrement toujours rapporté comme 2.0.11353.
[17/03/2018 21:13:02] Starting Host (HostId=MYMACHINE, Version=2.0.11353.0, ProcessId=
Listening on http://localhost:8888/
Solution
Étant donné que l'exécution de func depuis Git Bash comme indiqué ci-dessus a montré un runtime de 2.0.11587.0, j'ai essayé which func
qui a renvoyé /c/Users//AppData/Roaming/npm/func
. J'ai fait un cat dessus et en résumé j'ai pu voir qu'il exécutait en fin de compte C:\Users\\AppData\Roaming\npm\node_modules\azure-functions-core-tools\bin\func.exe
, et que dans ce même répertoire il y avait un func.dll
.
J'ai donc essayé les arguments d'application suivants dans Projet/Propriétés/Débogage :
C:\Users\\AppData\Roaming\npm\node_modules\azure-functions-core-tools\bin\func.dll host start --port 8888 --pause-on-error
puis enfin j'obtiens...
[17/03/2018 21:16:29] Starting Host (HostId=MYMACHINE, Version=2.0.11587.0, ProcessId=
Listening on http://localhost:8888/
et, de manière cruciale, l'erreur que je recevais lors de la publication sur Azure commence également à se manifester localement.
Bon, maintenant que les runtimes sont tous synchronisés, il est temps de fixer mon bug réel :)
0 votes
Dans VS2017 15.9.5 en utilisant
Microsoft.NET.Sdk.Functions
v1.0.26, votre approche fonctionne très bien.