Ważne jest, aby zrozumieć, że istnieją dwa, całkowicie oddzielne kompilacje dla twojego projektu. Pierwszy to ten, który robisz w Visual Studio. Drugi to ten, który ASP.NET robi tuż przed wyświetleniem strony. Jeśli DEBUG wewnątrz twojego widoku jest wykonywany w drugim kroku. Wydanie, które opisujesz, jest pierwszym krokiem. Dlatego ustawienie debugowania/zwolnienia projektu nie ma nic wspólnego z ustawieniem debugowania w pliku Web.config/kompilatorze ASP.NET.
Co więcej, byłoby całkowicie niewłaściwe, aby kompilacja Visual Studio zmieniła ustawienia debugowania w pliku Web.config. Są to dwie oddzielne kompilacje i jedna nie powinna wpływać na drugą.
Z drugiej strony, prawdopodobnie masz całkowicie uzasadnioną potrzebę, aby Twój widok zachowywał się inaczej podczas debugowania wewnątrz Visual Studio, i możesz to zrobić. Wystarczy przenieść instrukcję "if" poza widok i do czegoś, co jest skompilowane przez Visual Studio, zamiast ASP.NET. Robimy to za pomocą pomocnika HTML. Na przykład:
/// <summary>
/// Returns the HTML to include the appropriate JavaScript files for
/// the Site.Master.aspx page, depending upon whether the assembly
/// was compiled in debug or release mode.
/// </summary>
/// <returns>HTML script tags as a multi-line string.</returns>
public static string SiteMasterScripts(this UrlHelper helper)
{
var result = new StringBuilder();
#if DEBUG
result.AppendFormat("<script src=\"{0}\" type=\"text/javascript\"></script>", helper.Content("~/Content/js/MicrosoftAjax.debug.js"));
#else
result.AppendFormat("<script src=\"{0}\" type=\"text/javascript\"></script>", helper.Content("~/Content/js/MicrosoftAjax.js"));
#endif
// etc. ...
Obejmuje to debugowanie plików JS podczas uruchamiania w konfiguracji debugowania w programie Visual Studio, ale w przeciwnym razie zminimalizowane JS.
Przełączanie między minified a pełny javascript/css był dokładnie powodem, dla którego używałem tego IF DEBUG. Dziękuję za Twoją odpowiedź. –
Jest to mylące, ponieważ studio graficzne wyłapuje niewłaściwy blok tekstu. – ajbeaven
+1 bardzo dobre wyjaśnienie na temat dwóch kompilatorów. Ma to sens teraz. – ashes999