2009-06-25 87 views
3

我希望能夠根據我在VS2005 IDE中選擇的模式(DEBUG或RELEASE)指向2個程序集中的一個。像這樣的事情(不工作):「#if DEBUG」在ASPX/ASCX頁面

<%@ 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> 

所以,我的問題是:如何正確地使用在#if DEBUG在ASPX或ASCX頁?

+0

爲了記錄,你有什麼工作的控制參考之外。我幾乎使用完全相同的技術來動態控制我的JavaScript中的內容,並且完美地工作。所以你的問題與控制引用有關。 – 2013-06-20 19:01:32

回答

3

我不知道如何得到你想要的東西,但我面臨同樣的問題。我在web.config中執行我的控件引用,然後執行構建步驟以複製相應的web.config以進行發佈/調試。它的工作原理是因爲您需要不同的web.config來進行發佈/調試(如果僅用於debug =「true」屬性),並且您可以爲調試和發佈提供不同的構建後步驟。

+0

你有沒有關於你如何做這件事的例子?我的另一個任務是將自動構建引入這家公司,除了非常基礎的構建之外,我做的很少。 – 2009-06-25 22:10:18

+1

魔術是如果「$(ConfigurationName)」==「調試」...批處理文件...更多信息: 發現SO問題與一些意見http://stackoverflow.com/questions/150053/how-to- run-visual-studio-post-build-events-for-debug-build-only和MSDN Docs:http://msdn.microsoft.com/en-us/library/ke5z92ks.aspx和博客條目http:/ /www.adduxis.com/blogs/blogs/sven/archive/2005/11/01/15.aspx – MatthewMartin 2009-06-26 00:15:52

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擴展方法。

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

      return string1; 

      #else 

      return string2; 

      #endif 
     } 
    } 
} 

然後在你的ascx文件導入文件:基本上,你有這樣的事情編寫一個C#文件

<%@ Import Namespace="ExtensionHandlers" %>

最後,你想要的代碼只是這樣做:

<%= Html.GetMetaTags() %>

聲明:我沒有編譯這個,有可能是編碼錯誤。祝你好運。

相關問題