0

Nous avons différentes solutions VB.NET auxquelles sont associés des programmes d'installation ClickOnce, mais nous ne souhaitons pas conserver les versions précédentes des programmes d'installation. Donc ce que je l'ai fait aujourd'hui, est d'ajouter un événement pré-construction des projets, qui supprime le dossier « fichiers d'application » pour l'installateur:Comment supprimer un répertoire dans l'événement de pré-construction Visual Studio à l'aide de constantes de compilateur conditionnelles?

rd /s /q "\\myserver\myapp\Application Files" 

cela fonctionne très bien et dandy. Maintenant, nous avons une autre solution qui est construite en utilisant une constante de compilateur personnalisée (configuration via les options de compilation avancées dans Visual Studio) - si une constante s'appelle APP1, elle est compilée différemment si la constante APP2 est présente et ensuite nous disposez d'un dossier de publication différent pour le programme d'installation ClickOnce associé et devez donc supprimer le dossier "Fichiers d'application" approprié associé à la version actuelle. Si APP1 est présent, le dossier de sortie ClickOnce est "\ myserver \ app1 \ Application Files" et de même si APP2 est présent, le dossier de sortie ClickOnce est "\ myserver \ app2 \ Application Files". Notez que ces emplacements sont des paramètres UNC et commencent par un double "\", mais pour une raison quelconque, ils n'apparaissent pas comme doubles dans ce post!

J'ai fait des recherches accéder à ces constantes du compilateur dans mon cas de pré-construction, et je l'ai fini avec:

if "$(DefineConstants.Contains(APP1))" (rd /s /q "\\myserver\App1\Application Files") 

if "$(DefineConstants.Contains(APP2))" (rd /s /q "\\myserver\App2\Application Files") 

Donc, si je le compilateur est constant à App1 et essayer de construire I obtenir:

erreur La commande "si "True"(e/s/q "\ myserver \ App1 \ application Files") si "False"(e/s/q" \ monserveur \ App2 \ application Fichiers ")" sortis avec le code 255.

J'ai essayé toutes sortes de choses, en utilisant Quand/Choisir, en utilisant rmdir etc. mais je reçois toujours ceci avec une erreur 255; Est-ce que quelqu'un sait pourquoi c'est ... et plus important encore, sache comment je peux contourner cela?

Cheers,

Chris.

Répondre

3

Je crée une démo et reproduis votre problème de mon côté, s'il vous plaît modifier votre pré-construction-événement comme celui-ci:

if $(DefineConstants.Contains(APP1)) == True (rd /s /q "\\myserver\App1\Application Files") 

if $(DefineConstants.Contains(APP2)) == True (rd /s /q ""\\myserver\App2\Application Files ") 
+0

Il dit que je devrais éviter d'ajouter des commentaires qui disent simplement « merci » - mais comment Je suis censé remercier Cole Wu - parce que votre réponse était brillante - merci !! –