1

J'essaie d'obscurcir des tas de fichiers dans un répertoire et chaque génération, il y a de plus en plus de fichiers générés. Je voudrais savoir si je peux créer dynamiquement le fichier xml de configuration Dotfuscator en utilisant une tâche MSBUILD qui va générer le fichier xml chaque fois qu'un nouveau fichier est ajouté au répertoire?MSBUILD Créer dynamiquement Config XML Dotfuscator

Répondre

2

Cela peut être le bon moment pour utiliser le Directory input. Plutôt que de représenter un seul assemblage (.exe ou .dll), ce type d'entrée Dotfuscator capture tous les assemblages dans un répertoire. Lorsque le contenu du répertoire change, la construction de Dotfuscator récupère automatiquement tous les nouveaux assemblages.

Pour créer un fichier de configuration Dotfuscator avec une entrée d'annuaire, ouvrez l'interface graphique et ajoutez une entrée comme vous le feriez normalement (directions for Community Edition's GUI et for Professional Edition's standalone GUI), mais au lieu de sélectionner un fichier dans la boîte de dialogue Parcourir ..., juste Accédez au répertoire et cliquez sur "Ouvrir" tandis que le "Nom de fichier" est toujours répertorié comme "Sélection de dossier". Ensuite, enregistrez votre configuration. Désormais, chaque fois que vous exécutez Dotfuscator (que ce soit à partir de l'interface graphique autonome, de la ligne de commande, de l'intégration Visual Studio ou de la tâche MSBuild), tous les assemblys du répertoire seront traités en entrée.

Remarque: Si vous regardez le fichier de configuration lui-même, vous pourriez être surpris que ce sera encore la liste des ensembles individuels:

<input> 
    <loadpaths /> 
    <asmlist> 
    <package refid="19e1b0c5-7221-476f-af4b-bafef68edc95"> 
     <file dir="C:\code\BasicTestApp\BasicTestApp\bin" name="Debug" /> 
     <asmlist> 
     <inputassembly refid="a6da5d8d-c181-4103-840d-d8cc7c85937a"> 
      <option>honoroas</option> 
      <option>stripoa</option> 
      <option>transformxaml</option> 
      <file dir="" name="BasicTestApp.exe" /> 
     </inputassembly> 
     <inputassembly refid="df84dad0-fbe8-49ab-b8c8-9fb59e706785"> 
      <option>honoroas</option> 
      <option>stripoa</option> 
      <option>library</option> 
      <option>transformxaml</option> 
      <file dir="" name="ClassLibrary.dll" /> 
     </inputassembly> 
     </asmlist> 
    </package> 
    </asmlist> 
</input> 

En dépit de cette mise en page, Dotfuscator traitera toutes assemblées dans le C:\code\BasicTestApp\BasicTestApp\bin\Debug répertoire quand il exécute une construction basée sur ce fichier de configuration, pas seulement les deux énumérés. Les éléments d'assemblage dans la configuration sont juste là pour que vous puissiez toujours créer des règles contre des assemblages individuels dans l'interface graphique (par exemple, pour qu'un assemblage soit en mode Bibliothèque). La liste représente l'état du répertoire lorsque l'interface graphique a modifié pour la dernière fois la configuration.

Clause de non-responsabilité: Je travaille pour l'équipe Dotfuscator et réponds à cette question dans le cadre de mon travail.


Note complémentaire en raison de précisions dans les commentaires: le paquet de répertoire a une fonction où vous pouvez exclure certains assemblages de faux-fuyants. Ces assemblys seront traités comme un paquet Artefact et copiés de l'entrée vers la sortie sans modification. Tous les assemblages obfusqués faisant référence à ces assemblages exclus seront toujours traités correctement. Pour cela dans l'interface graphique, cliquez avec le bouton droit sur l'assemblage dans le package et sélectionnez "Exclure l'assembly du package". Ou, si vous préférez modifier le fichier de configuration, ajoutez la balise suivante <option> comme un enfant de chaque étiquette <inputassembly> pertinente:

<option>artifact</option> 
+0

Merci d'avoir répondu. Maintenant, il apporte un dans une autre question, donc je ne veux pas obscurcir toute la DLL dans un dossier que certains des fichiers .dll que j'utilise sont des tiers et ils sont déjà obfusqués. Donc, celui que je suis intéressé peut être copié à un endroit différent, les obfusciter en utilisant Dotfuscator et les copier avant de créer le paquet? Est-ce que n'importe quelle place dans le guide de l'utilisateur a un exemple de tâche msbuild pour la prise en charge du répertoire dotfuscator à titre d'exemple? – varun7447

+0

@ varun7447 J'ai ajouté une note à ma réponse qui, je pense, répondra à la première question de votre commentaire.Je recommande d'utiliser la méthode décrite au lieu de copier certaines DLL, car vous devrez alors configurer un chemin de chargement d'assembly personnalisé (vos DLL obfuscated référenceront les DLL exclues, qui ne sont plus dans le même répertoire). En ce qui concerne votre deuxième question sur le support MSBuild, il n'y a pas d'exemple spécifique pour ce cas, mais comme le paquet est une fonctionnalité du fichier de configuration, vous pouvez simplement passer le chemin du fichier config à la propriété ConfigPath de la tâche Dotfuscate. –

+0

Parfait c'est vraiment utile. Merci pour votre réponse rapide. – varun7447