10
votes

Comment gérez-vous des fichiers exclus avec aspnet_compiler?

J'essaie d'utiliser ASPnet_Compiler pour déplacer un projet déjà compilé d'un endroit à un autre. J'utilise Subversion pour le contrôle de la révision.

Le processus obtient essentiellement tout le code de Subversion, une construction, puis appelle aspnet_compiler.

Mon problème vient à être quand j'ai un fichier ASCX exclu. Ce fichier fait partie du dernier code, mais le compilateur de construction normal l'ignore, donc aucun problème. Aspnet_Compiler souffle toutefois, car il ne peut pas trouver le code derrière pour ce contrôle particulier.

Je ne suis pas sûr si

  • Je fais ce droit;
  • Il y a un moyen de simplement obtenir l'arborescence de fichiers correct de subversion
  • Il y a un moyen plus facile; ou
  • Ceci est attendu, et j'ai besoin de supprimer les fichiers exclus à chaque fois.

    J'apprécierais toute aide.

    Tom


2 commentaires

Si votre contrôle ASCX n'est plus requis, pourquoi ne le supprimez pas? Avec Subversion, vous aurez toujours accès au fichier via les révisions les plus anciennes.


Nous l'avons supprimé de la solution, mais lorsque nous utilisons Subversion pour obtenir le projet, il reçoit tous les fichiers, y compris celui qui n'est pas utilisé.


4 Réponses :


3
votes

Ceci est attendu: aspnet_compiler.exe compile tous les fichiers de l'application et ne regarde pas le fichier de projet. Ainsi, il n'a aucune notion d'un fichier exclu.

La suggestion de Babak Naffas de supprimer le fichier est probablement le moyen le plus simple de traiter avec le fichier, plutôt que de la supprimer manuellement (ou de la suppression de sa suppression) à chaque fois.


0 commentaires

10
votes

Depuis .NET 4.5 ou 4.5.1 (Je ne suis pas sûr que) il y avait une option -x forte> ajoutée à aspnet_compiler.exe, ce qui vous permet d'exclure les répertoires de la compilation. Vous pouvez trouver l'option via la commande "aspnet_compiler /?".

aspnet_compiler -v /foo -p "C:\MyWebsite" -x ToBeExcluded "c:\temp\web"
p>example:

p>Il y a-t-il un dossier nommé" TOBExClueded "sur mon site Web. Je peux utiliser la commande suivante pour pré-compiler le site Web et exclure ce dossier, p> xxx pré> p>


1 commentaires

Est-ce que ceci -x TOBEEXCUPLUÉ "C: \ TEMP \ WEB" s'applique également à un fichier ... Par exemple --x Tobeexclused "C: \ temp \ web \ myfile.rdlc"



2
votes

Je me luttais depuis si longtemps avec ça. Mais a finalement trouvé un contournement

attrib +h folderToExclude & runAspComplierWithAllOptions & attrib -h folderToExclude


0 commentaires

2
votes

Il existe un moyen très facile de le faire: réglez l'attribut caché sur le dossier pour exclure et aspnet_compiler code> sautera.

Un cas typique pour cette erreur est le nœud_modules code> Créé par NPM Installation code> p>

Si vous exécutez NPM Installez code> à partir d'un script ou de la ligne de commande, vous pouvez exécuter le Commande attrib code>, après exécution NMP installer code> pour masquer le dossier: p> xxx pré>

si vous exécutez NPM Installation à partir d'un projet code> msbuild code>, vous pouvez ajouter une tâche exec code>, comme ceci: p> xxx pré>

le code de sortie pour La commande attrib code> est toujours zéro, au moins dans mes tests, il n'est donc pas logique de le vérifier pour déterminer si la commande fonctionne avec succès. p>

dans le précédent MSBUILD Exemple Le dossier à masquer est "$ (packagejfolder) \ node_modules" code> car la propriété packagejfolder code> est le nom du dossier où packages.json code> fichier est, un d Ainsi où nœud_modules code> sera créé. p>

Pour les autres cas, vous pouvez toujours spécifier votre dossier relatif à l'emplacement du projet, comme celui-ci: P>

<HideFolder>attrib +H "$(MSBuildProjectDirectory)\folder\to\hide"</HideFolder>


0 commentaires