2009-06-25 28 views
3

私はVS2005 IDEで選択したモード(DEBUGまたはRELEASE)に基づいて2つのアセンブリの1つを指し示すことができます。このような何か(動作しない):ASPX/ASCXページの#if DEBUG

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

レコードの場合は、コントロール参照の範囲外で作業しているものがあります。私はjavascriptの中にあるものを動的に制御するためにほぼ同じテクニックを使用しました。だからあなたの問題はコントロールの参照と関係しています。 –

答えて

3

私はあなたが望むものを手に入れる方法がわかりませんが、私は同じ問題に直面しています。私はweb.configで自分のコントロール参照を行い、リリース/デバッグのために適切なweb.configをコピーするビルドステップを投稿します。これは、リリース/デバッグ用のweb.config(debug = "true"属性の場合のみ)と、デバッグとリリースのための別のポストビルドステップを持つことができるためです。

+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

もう1つの方法は、HtmlHelper拡張メソッドを使用することです。あなたのASCXファイルのインポートに続いてファイル

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

      return string1; 

      #else 

      return string2; 

      #endif 
     } 
    } 
} 

:あなたはコードだけでこれを実行したい

<%@ Import Namespace="ExtensionHandlers" %>

そして最後には基本的にはこのような何かを持つC#ファイルをコーディング

<%= Html.GetMetaTags() %>

免責事項:私はこれをコンパイルしていない可能性があります、おそらくコード化エラーがあります。がんばろう。

+0

これはASP.NET MVCでのみ動作します – Jaap

+0

@Jaap:通常のWebFormsの場合、これはページコードで保護されたメソッドである必要があります。後ろの階級 – abatishchev