2009-06-25 3 views
3

VS2005 IDE에서 선택한 모드 (디버그 또는 릴리스)에 따라 2 개의 어셈블리 중 하나를 가리킬 수 있어야합니다. 이런 식으로 뭔가 (작동하지 않는) :ASPx/ASCX 페이지의 "#if 디버그"

그래서
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="VideoDialog.ascx.cs" Inherits="Company.Web.Base.Controls.VideoDialog" %> 

<% #if DEBUG %> 
<%@ Register TagPrefix="Company" Assembly="Company" Namespace="Company.UI.Controls.VideoControl" %> 
<% #else %> 
<%@ Register TagPrefix="Company" Assembly="Company.UI.Controls.VideoControl" Namespace="Company.UI.Controls.VideoControl" %> 
<% #endif %> 

<Company:CompanyVideo ID="Video1" runat="server"></Company:CompanyVideo> 

, 내 질문은 : 어떻게 올바르게 ASPX 또는 ASCX 페이지에서 # 만약의 DEBUG를 사용합니까?

+0

레코드의 경우 제어 참조 외부에서 수행 한 작업. 나는 javascript에있는 것을 동적으로 제어하는 ​​거의 동일한 기술을 사용했으며 완벽하게 작동합니다. 그래서 문제는 컨트롤 참조와 관련이 있습니다. –

답변

3

나는 당신이 원하는 것을 얻는 방법을 모르지만 나는 똑같은 문제에 직면 해있다. web.config에서 내 컨트롤 참조를 만든 다음 릴리스/디버그를 위해 적절한 web.config를 복사하기위한 빌드 단계를 게시하십시오. 어쨌든 (debug = "true"속성의 경우에만) 릴리스/디버깅을 위해 다른 web.config가 필요하고 디버그 및 릴리스를위한 다른 게시 빌드 단계를 가질 수 있기 때문에 작동합니다.

+0

이 작업을 수행하는 방법에 대한 예가 있습니까? 내 임무 중 또 하나는이 회사에 자동 빌드를 소개하는 것이고, 나는 아주 기본적인 빌드를 거의 사용하지 않았다. –

+1

마법은 "$ (ConfigurationName)"== "Debug"... 배치 파일 일 경우 ... 찾았습니다. 약간의 조언이있는 질문 http://stackoverflow.com/questions/150053/how-to- 디버깅 빌드 전용 이벤트 빌드 및 MSDN 문서 : http://msdn.microsoft.com/en-us/library/ke5z92ks.aspx 및 블로그 항목 http :// /www.adduxis.com/blogs/blogs/sven/archive/2005/11/01/15.aspx – MatthewMartin

3
<% 
//<compilation debug="false"> in web.config 
//*.aspx 

#if DEBUG 
    Response.Write("<script type=\"text/javascript\">"); 
    Response.Write("$.validator.setDefaults({ debug: true })"); 
    Response.Write("</script>"); 
#endif 

%> 
2

또 다른 방법은 HtmlHelper 확장 방법을 사용하는 것입니다. 파일 당신의 ASCX 파일 가져 오기에 그런

namespace ExtensionHandlers 
{ 
    public static class MetaTags 
    { 
     public static string GetMetaTags(this HtmlHelper html) 
     { 
      #if DEBUG 

      return string1; 

      #else 

      return string2; 

      #endif 
     } 
    } 
} 

: 기본적으로이 같은 뭔가는 C# 파일을 코딩

<%@ Import Namespace="ExtensionHandlers" %>

그리고 마지막으로 당신이 코드는 바로이 수행 할 위치 :

<%= Html.GetMetaTags() %>

면책 조항 : 컴파일하지 않은 것 같습니다. 코딩 오류가있을 수 있습니다. 행운을 빕니다.

+0

이것은 ASP.NET MVC에서만 작동합니다. – Jaap

+0

@Jaap : 일반 WebForms의 경우 이는 페이지 코드에서 보호 된 메소드 여야합니다. 배후에 – abatishchev