Как установить debug false для режима выпуска

у меня есть эта сеть.конфигурационный файл с параметром компиляции, как показано ниже

Web.config

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

и вот что Visual Studio ставит для режима выпуска по умолчанию.

Web.Освобождать.config

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

Я использую это для проекта MVC4. На основе в этом уроке, я ожидал, что будут обслуживаться мини-версии js и css, когда приложение запускается под релиз Режим. Но это, похоже, не работает, и не минифицированные версии js и css обслуживаются. С другой стороны, если я явно установил debug в false в web.config, тогда версии min обслуживаются правильно.

Кажется сборник проблема преобразования тегов при запуске приложения под Режим Выпуска, но я не понимаю, что не так с тем же в Интернете.Освобождать.конфиг.

короче говоря, я не могу получить связывание и minification работает, запустив приложение под Режим Выпуска.

5 ответов


Web.config преобразования, как они определены в Интернете.Освобождать.конфигурации выполняются только при развертывании/публикации проекта для соответствующей конфигурации.

просто изменение активной конфигурации в Visual Studio для выпуска и запуска приложения не запускает преобразования. Следовательно, паутина.конфигурация остается неизменной. Это поведение разумно, так как веб-приложение запускается из каталога проекта, содержащего исходный веб-файл.конфиг. Если Visual Studio преобразует интернет.consign, ваша оригинальная сеть.конфигурация будет изменена.

Если вы еще не создали профиль развертывания, вы можете опубликовать приложение в файловой системе для проверки поведения. Выберите Release в качестве конфигурации для запуска развертывания. Преобразования должны выполняться, как и ожидалось.


Если вы хотите протестировать пакет .NET и минимизацию, которые вы настроили в своем глобальном.файл asax, вы также можете использовать нотацию предварительной компиляции...например

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

при этом вашему приложению не нужно будет запускать преобразование в операции сборки и будет работать так, как вы хотите.


мой ответ может быть поздно, однако это то, что работали со мной:

Я изменил строку :

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

в :

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

это в основном сделало трюк, так как я думаю, что оптимизатор ищет значение отладки, которое будет присутствовать и == "false".

надеюсь, это поможет людям, которые не хотят управлять этим из кода.


возможно, улучшение для Омара.Ответ Элани:

в преобразовании Release замените строку:

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

следующим образом:

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

удаление атрибута отладки достаточно RemoveAttributes (debug). Он будет работать аналогично debug=false.