2

Si j'ai besoin d'utiliser le compilateur C# de Microsoft à partir de l'invite de commande normale, il indique right here comment et il indique right here comment je définis la variable d'environnement (en exécutant VSVARS32.BAT). Je l'exécute et après cela je peux lancer "csc" (le compilateur). Cependant l'effet semble disparaître quand je ferme la fenêtre de ligne de commande qui exécute VSVARS32.BATcomment s'assurer que le fichier batch VSVARS32.BAT a un effet permanent?

Y at-il un moyen de rendre les variables d'environnement permanentes, de sorte que je puisse exécuter csc.exe à partir d'une application? Essayez d'ajouter la commande pour l'exécuter dans le fichier autoexec.NT dans le répertoire Windows.

+0

Je suis un peu confus par votre configuration comme décrit ci-dessus. Si je le lis correctement, vous ouvrez une invite de commande que vous utilisez pour exécuter VSVARS32.bat. Est-ce que cela ouvre une autre invite de commande (avec les variables d'environnement définies) ou la charge-t-elle simplement dans l'invite de commande actuelle? Pour le premier, la fermeture de l'invite de commande d'origine ne devrait pas affecter la nouvelle fenêtre. Si c'est le dernier, alors vous n'avez pas de chance - vous devrez rouvrir et lancer VCVARS32.bat chaque fois que vous ouvrirez l'invite de commande. Sauf si vous prenez l'une des approches mentionnées ci-dessous ... – cristobalito

+0

c'est le dernier .. le problème est que j'appelle csc.exe d'un autre programme et je ne peux pas le faire appeler le fichier bat d'abord –

Répondre

3

Je vous suggère de créer un nouveau fichier .bat qui lance vcvars.bat, puis votre application. Cela permettra de s'assurer que l'environnement est configuré de manière appropriée.

+0

cela fonctionne pour moi. Merci –

+0

'SET current_folder =% CD% DIR/S/B * .sln | FINDSTR/e .sln> project-files.list -------------------------------------- ----------------------------------- CALL "% VS100COMNTOOLS% \ vsvars32.bat" POUR/F "tokens = *" %% un IN ('TYPE projet files.list') DO ( \t CD %% ~ dpa \t devenv "%% un"/build "Debug" \t devenv "%% un"/construire "Release" \t -------------------------------------------- ------------------------ ) ', ceci est une partie de mon script, s'exécutant depuis norml CMD. Après la boucle for - je veux inverser la variable 'PATH' en supprimant toutes les modifications apportées par vcvars32.bat, une solution? –

+0

Cochez cette option, https://gist.github.com/Baneeishaque/0da7d54af47fab0d2f2509a5825da092 –

0

+0

qu'est-ce que c'est? faire? –

+0

il s'exécute chaque fois que vous démarrez l'invite de commande. Ouvrez autoexec.nt (dans le répertoire Windows) et éditez-le pour ajouter la commande que vous taperiez sur le clavier pour lancer le fichier .bat – laurent

+0

: Vous pouvez placer le contenu de VSVARS32.bat dans le fichier autoexec.NT ou ajouter c: \ path_to_ \ VSVARS32.bat à la fin de autoexec.nt. autoexec.nt se trouve dans le répertoire system32 - Je ne me souviens pas maintenant et je ne peux pas le tester car ma machine n'est plus sous Windows depuis un certain temps mais je pense que vous devez utiliser 'command.com' au lieu de' cmd.exe' pour autoexec.nt à utiliser. – laurent

0

Comme dit laurent-rpnet, vous pouvez l'appeler dans votre fichier autoexec.nt. Alternativement, vous pouvez ajouter les variables d'environnement qu'il définit à la liste dans le Panneau de configuration | Système | Avancé | Variables d'environnement.

Ou vous pouvez créer un fichier make et les mettre dedans (ou appeler la chauve-souris), et utiliser le fichier make pour construire votre projet à partir de la ligne de commande.

+0

à nouveau, que fait autoexec.nt, et comment puis-je le faire? le fichier batch a beaucoup de contenu, y compris les conditions et d'autres choses que je ne comprends pas complètement, donc je ne sais pas exactement ce que je devrais ajouter dans la variable d'environnement –

+0

du panneau de contrôle s'exécute dès que vous vous connectez. Ainsi, toutes les variables que vous définissez ici seront disponibles pendant toute la durée de votre session. –

+0

oh comment l'ajouter à autoexec? –

1

Le fichier VSVAR32.bat modifie simplement certaines variables d'environnement (ajoute un répertoire au chemin, définit LIB et INCLUDE, etc.). Vous pouvez toujours apporter les mêmes modifications à l'environnement Windows principal afin qu'elles soient héritées par tous les processus suivants (à partir de l'applet "système" du panneau de configuration). Un certain nombre d'autres outils de développement utilisent les mêmes variables d'environnement (y compris les versions antérieures de Visual Studio). Faire les changements de configuration dans l'environnement principal n'est pas très pratique lorsque vous voulez utiliser des outils de développement qui nécessitent des paramètres contradictoires sur le même PC (c'est pourquoi Microsoft les place dans MSVAR32.bat au lieu de modifier l'environnement principal). Il est donc utile de n'appliquer ces paramètres que lorsqu'ils sont requis, car ils sont en conflit avec les paramètres requis par d'autres outils de développement. Mettre ces changements dans l'environnement principal pose des problèmes si vous souhaitez utiliser différents outils de développement sur le même PC.

L'autre possibilité d'avoir votre application qui appellera csc.exe modifie l'environnement qu'il passe au processus enfant de la même manière que MSVAR32.bat.

Questions connexes