3

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を正しく使用するにはどうすればよいですか?

4

3 に答える 3

3

欲しいものを手に入れる方法がわかりませんが、同じ問題に直面しています。web.configでコントロール参照を実行してから、ビルド後の手順を実行して、リリース/デバッグ用に適切なweb.configをコピーします。とにかくリリース/デバッグ用に別のweb.configが必要であり(debug = "true"属性の場合のみ)、デバッグとリリース用に別のビルド後の手順を実行できるため、これは機能します。

于 2009-06-25T22:06:23.483 に答える
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

%>
于 2009-12-03T15:53:47.753 に答える
2

もう1つのアプローチは、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() %>

免責事項:私はこれをコンパイルしていません。おそらくコーディングエラーがあります。幸運を。

于 2010-10-07T16:47:46.887 に答える