2010-04-22 14 views
0

Est-ce un moyen d'exclure un bloc de code lorsque vous utilisez la fonction de publication dans Visual Studio. En d'autres termes disent que j'avais un bouton de connexion qui a fait quelque chose comme:Pouvez-vous exclure le code automatiquement lors de l'utilisation de la fonction de publication dans Visual Studio?

// Start Exclude when publishing 
if (txtUserName.Text == "" && txtPassword.Password == "") 
{    
    lp = new System.ServiceModel.DomainServices.Client.ApplicationServices.LoginParameters("UserName", "Password"); 
} 
else 
// Stop Exclude when publishing 
{ 
    lp = new System.ServiceModel.DomainServices.Client.ApplicationServices.LoginParameters(txtUserName.Text, txtPassword.Password); 
} 

De cette façon, quand je suis débogage je peux juste laisser le nom d'utilisateur et mot de passe champ vide et cliquez connexion et l'application me connecter. Mais lorsque l'application est publiée, le compilateur ignore ce code et ne le compile pas dans l'application.

Répondre

0

Vous pouvez utiliser la constante DEBUG, qui doit être active dans les préférences du projet.

Ensuite, vous pouvez simplement envelopper votre code sur les points suivants:

#if DEBUG 
    // some code here 
#else 
    //other code here 
#endif 

S'il n'y a pas besoin d'un autre, ne l'utilisez pas.

1

Vous pouvez utiliser l'Conditional attribut avec la constante DEBUG et en supposant que vous publiez uniquement le code dans la configuration de sortie que par défaut ne définit pas la constante DEBUG vous pourriez faire quelque chose comme ceci:

static void Main(string[] args) 
{ 
    Login("John", "Doe"); 
} 

public static void Login(string username, string password) 
{ 
    SetDebugCredentials(ref username, ref password); 

    // Login here 
    Console.WriteLine("Credentials: {0} | {1}", username, password); 
} 

[Conditional("DEBUG")] 
public static void SetDebugCredentials(ref string username, ref string password) 
{ 
    username = "User"; 
    password = "Password"; 
} 

Cette le code imprimera l'utilisateur et le mot de passe dans la configuration de débogage et John Doe dans la configuration de version.

0

Bien que la compilation conditionnelle et les commutateurs #if fonctionnent correctement dans ce cas, je pense que vous recherchez réellement la propriété ApplicationDeployment.IsNetworkDeployed.

// Check if the application was published via ClickOnce. 
if (!ApplicationDeployment.IsNetworkDeployed) {