75 votes

MSBuild, définir les symboles de Compilation conditionnelle

Je suis peut-être juste aveugle, mais est-il une ligne de commande pour spécifier les symboles de compilation conditionnelle dans MSBUILD?

J'ai actuellement cette Ligne dans mon buildscript:

SET MSBUILD=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\MSBuild.exe
SET CONFIG=Debug
%MSBUILD% /p:Configuration=%CONFIG% /p:OutputPath=..\..\output source\MyProject\MyProject.csproj

Et je tiens à ajouter une condition. Dans Visual Studio, je peux juste aller dans les Propriétés du Projet => Build => symboles de compilation Conditionnelle, mais je n'ai pas vu cette option pour msbuild?

Bonus de Karma si vous savez si je peux tout à fait remplacer tous les symboles déjà indiqué dans la .csproj fichiers afin de s'assurer que seules les conditions de mon Buildscript aller dans.

135voto

Tomalak Points 150423

Avez-vous vu ce? (plus d’info est dans l’avant-dernier post)

18voto

Ruben Bartelink Points 23945

J’ai dû utiliser un espace au lieu d’un point-virgule à la http://www.linqinpark.net/2009/01/13/MSBuildWithMultipleDefineConstants.aspx

4voto

leliao Points 11

``est une affaire de tout ou rien.

Si vous voulez juste faire éteindre le symbole trace, vous ne pouvez pas faire juste avec :``

Il faut définir quelque chose pour remplacer tous les symboles déjà définis :``

Merci Michael Stum souligner cette règle cachée J’ai également écrit un blog à ce sujet

1voto

Matt Points 3445

Ce qui est dit dans les réponses est valable pour C# code, et aussi pour ASP.NET "le code-behind" de code C#. Pour ASP.NET projets web, si vous voulez faire de la compilation conditionnelle dans les pages ASPX ainsi, il fonctionne un peu différemment conditionnelle de rendu HTML de la page (remarque j'ai supprimé MasterPageFile="..." AutoEventWireup="true" CodeBehind="..." Inherits="..." qui vous ont généralement à l' <%@ ... %> déclaration en tant que bien):

<%@ Page Title="MyPage" Language="C#" CompilerOptions="/d:DebugSym1;DebugSym2" %>

<% #if DebugSym1 %>         
    <h4>Section1</h4>
<% #else %>
    <h4>(Section 1 skipped)</h4>
<% #endif %>

<% #if DebugSym2 %>         
    <h4>Section2</h4>
<% #else %>
    <h4>(Section 2 skipped)</h4>
<% #endif %>

Si vous supprimez DebugSym1 ou DebugSym2 de la CompilerOptions, puis l' #else partie de la #if déclaration est rendue.

Je pensais que c'était la peine de mentionner pour l'intégralité de ce sujet, et peut vous faire économiser du temps. Plus que vous pouvez trouver dans cet article, si vous êtes intéressé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X