1
votes

Exécuter le service ng lorsque je démarre le débogage IIS (communauté VS)

J'ai en fait un projet ASP.NET avec Angular 5 (Angular CLI).

Ma question est la suivante: est-il possible d'exécuter la commande ng serve lorsque je lance IIS Express?

En fait, je dois ouvrir une cmd, exécuter ng serve puis démarrer IIS.

Si quelqu'un a une solution pour ça, merci beaucoup :)


3 commentaires

Salut ami, y a-t-il une mise à jour pour ce problème?


Je viens de mettre à jour votre commentaire


Bonjour, quelque chose comme ceci peut vous aider.


3 Réponses :


3
votes

Vous devrez exécuter "ng build" puis déployer des fichiers / dossiers dans ISS à partir du dossier "dist" de angular cli


0 commentaires

1
votes

Une solution consisterait à utiliser événements de génération dans Visual Studio.

Après une compilation, vous pouvez appeler la commande ng serve comme événement post-construction.


0 commentaires

1
votes

1. Tout comme ce que suggère adiii4. Vous pouvez appeler l'événement post-build comme une autre manière. Copiez la commande ng serve dans la zone de texte post-build-event.

2.Et pour atteindre cet objectif: exécutez la commande ng serve lorsque je lance IIS Express

Puisque nous peut exécuter IIS express à partir de la ligne de commande , vous pouvez ajouter les deux commandes dans l'événement post-build par des sauts de ligne comme ce problème .

3.De plus, un événement post-build sera exécuté chaque fois que vous construirez le projet (quel que soit le mode de débogage ou de publication) Je ne sais pas si cela répond bien à vos besoins, nous pouvons le personnaliser en cliquant avec le bouton droit sur Projet => Décharger le projet => Modifier xxx.csproj.

Exemple: Nous trouverons la cible PostBuild en bas, ajoutons une Condition = "'$ (Configuration)' == 'Debug'" peut aider à contrôler uniquement en mode débogage pour exécuter la commande ng serve et démarrer IIS Express comme:

  <Target Name="PostBuild" AfterTargets="PostBuildEvent">
    <Exec Command="call ngserve.bat" />
  </Target>

  <Target Name="StartIIS" AfterTargets="PostBuild">
    <Exec Command="call startIIS.bat"/>
  </Target>

Mise à jour:

Lorsque nous ajoutons quelque chose dans post-build-event, la cible "PostBuild" sera automatiquement ajoutée dans le fichier xxx.csproj (le format ci-dessous est pour l'application Web principale asp.net).

Et nous pouvons ajouter un script personnalisé comme ci-dessous pour faire une autre cible après que le moteur de construction ait exécuté la cible PostBuild. Pour votre situation, ngserve.bat est pour ng serve et startIIS.bat est pour démarrer IIS.

<Target Name="PostBuild" AfterTargets="PostBuildEvent"  Condition="'$(Configuration)'=='Debug'">
    <Exec Command="here commad1:call test.exe&#xD;&#xA;here command2:xxx.exe xxx" />
</Target>

 entrez la description de l'image ici

De plus : dans VS, nous pouvons go Tools => options => Projects and solutions => Build and run pour changer la verbosité de sortie de la construction du projet msbuild en détaillé . Après cela, chaque fois que nous construisons la solution ou le projet, nous pouvons voir des informations détaillées sur le processus de construction, ce qui facilite le dépannage.


3 commentaires

Merci pour votre commentaire. J'utilise un événement post-build avec un fichier bat mais maintenant, iis ne démarre pas. Je pense que c'est parce que ng serve n'est jamais fermé et qu'il attend le fichier bat. Savez-vous comment démarrer mon fichier chauve-souris en arrière-plan? Merci;)


@Heroz Quel est le contenu du fichier chauve-souris? Voulez-vous dire que vous utilisez l'événement post-build pour exécuter le bat (pour ng serve) et ensuite de quelle manière vous démarrez IIS? En tant que command2 en post-build ou démarrer manuellement?


Salut, désolé pour le retard et merci pour l'aide. Mon fichier bat contient la commande "ng serve". Pour l'utiliser => "Faites un clic droit sur le projet => Créer un événement et définissez" CALL ngServe.bat ". Après cela, j'exécute ma solution mais je bloque en fait. Je vérifie votre mise à jour