1. 問題の概要 VS2005 Web サイトの開発プロセスでは、Web サイトの公開が常に問題になります。VS2005 によって作成された Web サイトには、App_Code、App_Data、App_Themes などのデフォルトのディレクトリがあります。
UploadFile.cs クラス UploadFile などの cs/vb ファイルの場合、このクラス ファイルには表示可能な aspx ファイルがないため、このファイルを App_Code ディレクトリに配置する必要があります。そうしないと、このクラスは VS2005 Web サイトでアクセスできなくなります。入れただけですが、コンパイル時に(私のVS2005はTeam版ですが、世代が反応しません。コードを再度確認する感じで、公開Webサイトでしかプリコンパイルできません。他のバージョンはどうなっているのか分かりません) .) 問題は、発行 Web サイトを選択した後、発行方法を選択できるようになり、通常、発行後に生成される DLL の数が少なくなります。 、bin ディレクトリ内の App_Code.dll、App_Web_ (ランダムな文字).dll、参照される dll およびその他のファイル。問題はここにあります。仮想化を使用しないプログラムを作成したい場合、2 つの App_Code.dll を bin ディレクトリに配置する必要があるのではないでしょうか。争いは起こらないのでしょうか?また、プログラムが一度変更され、再公開する必要がある場合でも、それだけで済みます。 VS2005 の優れた点を見てください。 assigns="MyCodeGif, App_Web_vf3ukhnv" は、もともと MyCodeGif.aspx ファイルと MyCodeGif.aspx.cs ファイルでした。MyCodeGif.aspx ファイルは、MyCodeGif、App_Web_vf3ukhnv から継承されています。MyCodeGif は、MyCodeGif.aspx によって定義されたクラスであることがわかります。 cs.App_Web_vf3ukhnv は、bin フォルダー内の dll ファイルの名前です。再度公開しようとすると、なぜ MyCodeGif.aspx ページが MyCodeGif、App_Web_qwdwqd から継承されるのかという、さらに厄介な疑問が生じます。コンパイルされたアセンブリ名が異なります。
2. ASP.Net のページとクラスの関係
ASP.Net では、ページはクラスから継承でき、複数の継承を持つことができます。例えば
MyCodeGif.aspx ページ ファイル
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="MyCodeGif" %>MyCodeGif.aspx.cs は次のようになります
システムを使用する;
System.Data を使用します。
System.Configuration を使用します。
System.Collections を使用します。
System.Web を使用します。
System.Web.Security を使用します。
System.Web.UI を使用します。
System.Web.UI.WebControls を使用します。
System.Web.UI.WebControls.WebParts を使用します。
System.Web.UI.HtmlControls を使用します。
FreeCodeNum を使用する;
パブリック部分クラス MyCodeGif : System.Web.UI.Page
{
protected void Page_Load(オブジェクト送信者, EventArgs e)
{
//.....論理
}
}
、この方法でも継承できること
がわかります。
MyCodeGif.aspx ページ ファイル
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="MyCodeGif" %>
MyCodeGif.aspx.cs は次のようになります
システムを使用する;
System.Data を使用します。
System.Configuration を使用します。
System.Collections を使用します。
System.Web を使用します。
System.Web.Security を使用します。
System.Web.UI を使用します。
System.Web.UI.WebControls を使用します。
System.Web.UI.WebControls.WebParts を使用します。
System.Web.UI.HtmlControls を使用します。
FreeCodeNum を使用する;
パブリック部分クラス MyCodeGif : PageBase
{
protected void Page_Load(オブジェクト送信者, EventArgs e)
{
//.....論理
}
}
PageBase.csはこのような
システムを使用する;
System.Web を使用します。
System.Collections を使用します。
/**//// <概要>
/// PageBase の概要説明
/// </概要>
パブリック クラス PageBase : System.Web.UI.Page
{
publicPageBase()
{
}
}
MyCodeGif.aspx ページ ファイルと同様に、
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MyCodeGif.aspx.cs" Inherits="PageBase" %>つまり、ページは PageBase クラスから直接継承します。
結論: ASP.Net ページは、[System.Web.UI.Page クラスの親クラスから継承] 拡張サブクラスから継承できます。
3. 解決策: VS2005 で、つまりプロジェクト作成時にアセンブリ名をカスタマイズすることもできます。 、ウェブサイトの時間ではありません。つまり、作成した Web サイトを作成した後、プロジェクトを再作成して Web サイトのコードを再コンパイルできます。 aspx ファイルの継承は終了後に変更する必要がある場合がありますが、aspx ファイルの継承はクラス名にのみ関連するため (クラス名がある場合)、保存方法によっては変更する必要がない場合もあります。ネームスペースの場合は、ネームスペースも指定する必要があります)。 MyCodeGif.aspx ページ ファイルを次のように変更できます。
<%@ Page Language="C#" AutoEventWireup="true" Inherits="PageBase" %>
内部の CodeFile="MyCodeGif.aspx.cs" を削除します。
このようにして、VS2003と同じようにWebサイトを公開することができます。プロセスは少し複雑かもしれませんが、VS2003 に慣れているので、2003 と同じように仮想化なしのプログラムを実行することができます。
完全なテキスト。皆様のお役に立てれば幸いです。
著者: Xie Ping、Sunset Track 2006-5-27