Pouvez-vous dire Visual Studio à émettre un nom différent d'un fichier EXE en fonction de si un symbole de compilation conditionnel spécifique est défini? P>
4 Réponses :
Si vous chargez le fichier .csproj dans un éditeur de texte, vous pouvez contrôler la propriété AssemblageName CODE>:
<AssemblyName Condition="'$(Configuration)' == 'Debug'">WindowsFormsApplication9.Debug</AssemblyName>
<AssemblyName Condition="'$(Configuration)' != 'Debug'">WindowsFormsApplication9</AssemblyName>
Comment puis-je entrer une condition pour mon propre symbole, tel que no_log code> ou quelque chose au lieu d'une sélection de configuration?
@Patrick: Mes compétences Msbuild ne s'étendent pas assez loin. Ces constantes entrent dans la propriété définieconstants code>, mais toutes entrent dans la même valeur de propriété (
const1 = valeur; const2; const3 code>) et malheureusement, il ne semble pas y avoir de "Contient" -Opérator pouvant être utilisé dans les attributs code> code>.
Vérifiez ce fil: social. msdn.microsoft.com/forums/en-us/msbuild/thread/...
Étant donné que Visual Studio semble décomposer si vous ajoutez une condition au nom de l'Assemblée, cela ne fonctionne pas. Vous pouvez cependant déplacer la balise de nom de l'Assemblée sur le groupe de propriété avec la condition définie ...
Vous pouvez modifier le fichier CSPROJ, qui ne s'agit que d'un fichier MsBuild qui contient des «tâches». Il y a une section dans le fichier CSPROJ qui s'appelle 'Afterbuild'.
Peut-être, vous pouvez ajouter une commande là-bas qui renomme votre fichier EXE au nom de fichier de votre choix.
(Offensement, vous devrez faire défendre cette section). P>
Peut-être quelque chose comme ceci: p>
<Target Name="AfterBuild"> <Copy SourceFiles="" DestinationFiles="" Condition="" /> <Delete Files="" Condition="" /> </Target>
N'essayez pas d'essayer, mais cela écrasera néanmoins malheureusement une compilation existante. Peut-être pourrais peut-être entrer une avant-gardité et copier la demande existante s'il existe i>. Comment puis-je entrer dans la condition si j'ai un symbole conditionnel personnalisé saisi dans la balise code> définieconstants code> dans le fichier CSPROJ?
Depuis la définition d'une condition à la balise de nom de l'Assemblée, comme suggéré par Fredrik semble effectuer Visual Studio Cranky, vous pouvez modifier le nom de l'assemblage plus loin dans le fichier CSPROJ. En utilisant le Choisir l'élément est un peu comme une instruction IF, donc un nom Peut être ajouté si une condition est remplie, démontrée ci-dessous.
Obtenir une sous-chaîne de par exemple définieconstants code> dans un attribut de condition ne semble pas possible (selon MSDN ) avec" MSBuild de vanille ordinaire ", mais on peut définir leurs propres cibles de construction et définir une propriété lors de la compilation avec A
/ p: tag = valeur code> ( Référence de la ligne de commande MSBUILD ) p>
Aucune des réponses ici ne fonctionne ici.
Ils produisent des erreurs ou ne font rien. P>
Voici ma solution qui fonctionne dans VS2005 et je suppose qu'il fonctionnera également dans les versions VS plus récentes. Modifier le fichier * .csproj comme ceci: p>
<PropertyGroup> <PreBuildEvent> </PreBuildEvent> <PostBuildEvent> if $(PlatformTarget) == x86 move /y "$(TargetPath)" "$(TargetDir)$(ProjectName)_32.exe" if $(PlatformTarget) == x64 move /y "$(TargetPath)" "$(TargetDir)$(ProjectName)_64.exe" </PostBuildEvent> </PropertyGroup>