2009-06-25 84 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() %>

声明:我没有编译这个,有可能是编码错误。祝你好运。

相关问题