web-dev-qa-db-fra.com

Comment définir debug false pour le mode de publication

J'ai ce fichier web.config avec l'option de compilation définie comme ci-dessous

Web.config

<configuration>
...
<system.web>
    <compilation debug="true" targetFramework="4.5" />
    ...
</system.web>
</configuration>

Et voici ce que Visual Studio met par défaut pour le mode de publication.

Web.Release.config

<configuration xmlns:xdt="http://schemas.Microsoft.com/XML-Document-Transform">
 <system.web>
    <compilation xdt:Transform="RemoveAttributes(debug)" />
 </system.web>
</configuration>

J'utilise ceci pour le projet MVC4. Basé sur ce tutoriel , je m'attendais à ce que des versions réduites de js et css soient servies lorsque l'application est exécutée sous Release Mode. Mais cela ne semble pas fonctionner et des versions non minifiées de js et css sont servies. Par contre, si je mets explicitement debug sur false dans web.config, les versions min sont servies correctement. 

Il semble que la balise compilation soit transformée lorsque l'application est exécutée sous Release Mode, mais je ne comprends pas ce qui ne va pas avec le même problème dans Web.Release.config.

En bref, je ne parviens pas à faire fonctionner le groupage et la minification en exécutant l’application en mode Release.

25
Jatin

Les transformations Web.config telles qu'elles sont définies dans Web.Release.config ne sont effectuées que lors du déploiement/de la publication du projet pour la configuration correspondante. 

Le fait de modifier la configuration active dans Visual Studio en Version et d’exécuter l’application n’exécute pas les transformations. Par conséquent, le fichier web.config reste inchangé. Ce comportement est par ailleurs raisonnable lorsqu'une application Web est exécutée à partir du répertoire du projet contenant le fichier web.config d'origine. Si Visual Studio devait transformer le fichier web.consign, votre fichier web.config d'origine serait modifié.

Si vous n'avez pas encore créé de profil de déploiement, vous pouvez publier votre application sur le système de fichiers pour vérifier le comportement. Choisissez Release comme configuration pour exécuter le déploiement. Les transformations doivent être exécutées comme prévu.

16
Markus

Si vous souhaitez tester votre groupement .NET et la minification que vous avez configurés dans votre fichier Global.asax, vous pouvez également utiliser la notation de précompilation ... par exemple

#if DEBUG
  BundleTable.EnableOptimizations = false;
#else
  BundleTable.EnableOptimizations = true;
#endif

Avec cela, votre application n'aura pas besoin de déclencher la transformation dans l'opération de construction et s'exécutera exactement comme vous le souhaitez.

15
beauXjames

Ma réponse pourrait être en retard, cependant ce qui a fonctionné avec moi:

J'ai changé la ligne:

<compilation xdt:Transform="RemoveAttributes(debug)" />

à :

<compilation xdt:Transform="Replace" debug="false" targetFramework="4.5" />

en gros, cela a fonctionné, car je pense que l’optimiseur recherche la valeur Debug et == "false". 

J'espère que cela aidera les personnes qui ne veulent pas gérer cela à partir de code.

11
Omar.Alani

Peut-être une amélioration de la réponse d'Omar.Alani:

Dans la transformation Release, remplacez la ligne:

<compilation xdt:Transform="RemoveAttributes(debug)" />

avec ce qui suit:

<compilation debug="false" xdt:Transform="SetAttributes" />
5
davrob01

Supprimer l'attribut de débogage est suffisant. RemoveAttributes (debug) . Cela fonctionnera de la même manière que debug = false.

0
user2211290