我希望能够根据我在VS2005 IDE中选择的模式(DEBUG或RELEASE)指向2个程序集中的一个。像这样的东西(不起作用):
<%@ 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页面中正确使用#if DEBUG?
答案 0 :(得分:3)
我不知道如何得到你想要的东西,但我面临同样的问题。我在web.config中执行控制引用,然后执行构建步骤以复制适当的web.config以进行发布/调试。它的工作原理是因为你无论如何都需要一个不同的web.config来发布/调试(如果仅用于debug =“true”属性),并且因为你可以有一个不同的post build步骤来进行调试和发布。
答案 1 :(得分: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 :(得分:2)
另一种方法是使用HtmlHelper扩展方法。基本上你用这样的代码编写C#文件:
namespace ExtensionHandlers
{
public static class MetaTags
{
public static string GetMetaTags(this HtmlHelper html)
{
#if DEBUG
return string1;
#else
return string2;
#endif
}
}
}
然后在你的ascx文件中导入文件:
<%@ Import Namespace="ExtensionHandlers" %>
最后你想要的代码就是这样做:
<%= Html.GetMetaTags() %>
免责声明:我没有编译过这个,可能存在编码错误。祝你好运。