Changer le nom de l’exe en fonction du symbole de compilation conditionnel

Pouvez-vous dire à Visual Studio de générer un nom différent pour un fichier exe, selon qu’un symbole de compilation conditionnelle spécifique est défini?

Étant donné que la définition d’une condition pour la balise assemblyname, comme suggéré par Fredrik, semble rendre Visual Studio grincheux, vous pouvez modifier le nom de l’assembly ultérieurement dans le fichier csproj. L’utilisation de l’ élément Choose ressemble un peu à une instruction if. Vous pouvez donc append un nom si une condition est remplie (voir ci-dessous).

Obtenir une sous-chaîne par exemple dans DefineConstants dans un atsortingbut de condition ne semble pas possible (selon MSDN ) avec “plain vanilla MSBuild”, mais on peut définir ses propres cibles de construction et définir une propriété lors de la compilation avec un /p:Tag=value ( Référence de ligne de commande MSBuild )

  ... true     $(AssemblyName).TagDefined     ... 

Vous pouvez éditer le fichier csproj, qui est simplement un fichier MSBuild contenant des “tâches”. Il y a une section dans le fichier csproj qui s’appelle ‘AfterBuild’.

Peut-être que vous pouvez y append une commande qui renomme votre fichier exe en nom de fichier de votre choix.
(Bien entendu, vous devrez décommenter cette section).

Peut-être quelque chose comme ça:

     

Je n’ai pas approfondi la question, mais vous devez compléter l’atsortingbut Condition pour pouvoir vérifier si le symbole conditionnel est défini ou non.

Aucune des réponses ici ne fonctionne pour moi.

Ils produisent des erreurs ou ne font rien.

Voici ma solution qui fonctionne dans VS2005 et je suppose que cela fonctionnera également dans les versions plus récentes de VS. Editez le fichier * .csproj comme ceci:

     if $(PlatformTarget) == x86 move /y "$(TargetPath)" "$(TargetDir)$(ProjectName)_32.exe" if $(PlatformTarget) == x64 move /y "$(TargetPath)" "$(TargetDir)$(ProjectName)_64.exe"   

Le résultat sera qu’une compilation 32 bits produira un fichier ProjectName_32.exe et une version 64 bits produira ProjectName_64.exe .

S’il vous plaît noter la syntaxe étrange. Il ne doit y avoir aucune parenthèse autour de la condition if et le x86 ne doit pas être entre guillemets.

L’inconvénient de cette méthode est que vous ne pouvez plus démarrer votre fichier EXE dans le débogueur car Visual Studio ne trouve pas le fichier EXE qu’il a généré. Cela pourrait être résolu en remplaçant la commande ‘move’ par la commande ‘copy’ mais dans ce cas, vous devrez copier l’exécutable dans un autre répertoire car vous ne voudriez sûrement pas avoir le même fichier deux fois dans le même répertoire.

Tout cela est un gâchis. Il est vraiment incroyable que vous puissiez entrer le répertoire de sortie directement dans les parameters du projet, mais pour faire quelque chose de vraiment fondamental, comme changer le nom Exe, vous devez écrire un script aussi maladroit qui a des effets secondaires déplaisants. Honte à Microsoft!