1. ホーム
  2. asp.net

[解決済み] ASP.NETウェブサイトをASP.NETウェブアプリケーションに変換する方法

2023-02-22 20:54:50

質問

私は ASP.NET 3.5 ウェブサイト (Visual Studio の用語) を持っていますが、サイトは成長し続け、他のものの間でかなりカウボーイ的な外観になっています。 これを Web アプリケーション (名前空間とすべて) に変換してほしいのですが。

これは Visual Studio で簡単にできることでしょうか。 そうでない場合、すべての名前空間などを自動で作成できる他のツールはありますか?

どのように解決するのですか。

Web アプリケーションに変換する」というオプションは、「Web サイト」には存在しないことがわかりました。Web アプリケーションに変換する] オプションは、[Web アプリケーション] に対してのみ存在します!!!!

[強調]

では、ここからが本題ですが、変換を行うには 変換する必要があります。

  • VS 2008 ソリューションに新しい "Web Application" を追加します (ファイル->追加->新しい プロジェクト->C#->Web->ASP.NET Web Application を追加します。 アプリケーション) を作成します。

  • その後、古い "website" にあるすべてのファイルを、新しく作成した Web アプリケーションにコピーします。 で作成されたすべてのファイルを上書きします。 デフォルト

  • 次のステップは最も醜いものです。 を新しい Web アプリケーションに追加する必要があります。 アプリケーションに追加する必要があります。私は、VS 2008 PowerCommandsのおもちゃがこれをやってくれると思っていました。 他のプロジェクトタイプから参照をコピーするように と思ったのですが、そうではありませんでした。しかし、そうではありませんでした。 自分で、手動で、やらなければならない。 このステップで注意しなければならないのは 同じアセンブリの複数のバージョンを持っている場合 同じアセンブリの複数のバージョン(私の場合はAJAXToolkit) のように)、またはGACとローカルの両方のバージョンを持つアセンブリがある場合、この手順には注意が必要です。 とローカルバージョンの両方があるアセンブリなどでは、このステップに注意する必要があります。

  • 最後のステップを繰り返し、"Webアプリケーション"をビルドしようとしてください。 あなたは、"Webアプリケーション"のようなエラーを取得し続けるでしょう。 '......' は不明な名前空間です。あなたは アセンブリ参照がありません。といったエラーが出ます。 を除いて、これらのエラーがないことを確認してください。 を使用するサーバーコントロールのIDで置き換えてください。 使用するサーバーコントロールのIDに置き換えてください。つまり つまり、リファレンスを追加し続け を追加し、プロジェクトを構築していきます。 のために存在するエラーがなくなるまで、参照を追加し、プロジェクトを構築する。 .DESIGNER.CSまたは.DESIGNER.VBが見つからないために存在するエラーだけになるまで、参照を追加し、プロジェクトを構築し続けます。 ファイルがないために存在するエラーだけになるまで、参照を追加し、プロジェクトを構築し続けます。

  • その後、VS 2008 ソリューション エクスプローラーのルート プロジェクト ノードで、quot;web アプリケーション" に移動します。 2008 ソリューション エクスプローラーで、ルート プロジェクト ノードに移動し、右クリックします。 をクリックします。 オプション "Convert to web application" が見つかります。 このオプションが行うことは、実際には このオプションは、実際に "@Page" に小さな変更を加えることです。 と"@Control"のディレクティブに小さな変更を加えることです。 コントロールのディレクティブを少し変更し、必要な .DESIGNER.CSまたは.DESIGNER.VBファイルを作成します。

  • もう一度、"Webアプリケーション"を構築してみてください。エラーが発生した場合、どの を参照してください。 Webアプリケーションに変換する]をクリックします。 を再度クリックしてください。時々、エラーが発生する場合 が発生することがあります。 DESIGNERファイル以外のエラーが発生した場合、すべての ページ/コントロールにそれらの DESIGNERファイルが作成されないことがあります。 DESIGNER以外の問題を解決して Webアプリケーションに変換する]をクリックします。 をもう一度クリックすると、この作業が完了します。

  • VSのビルドが成功したら、準備は完了です。 Web アプリケーションのテストを開始します。 オプションとして、右クリックで Web アプリケーション" ルート プロジェクト ノードを右クリックし VS 2008 ソリューションエクスプローラーのルートプロジェクトノードを右クリックし プロパティ("Properties")をクリックし、タブ("Web")に移動します。 をクリックして、quot;webアプリケーション"をIISの仮想フォルダに設定します。 をIISの仮想フォルダに設定します(IISの仮想ディレクトリを新規に作成することもできます)。 新しい仮想ディレクトリを VSで新規作成できます)。もし、IISの の仮想ディレクトリを使用する場合は、古い IISの仮想ディレクトリを使用したい場合は、まずIISから を使用したい場合は、まず IIS からそれを削除する必要があります。

  • 更新: ページをテストするとき、次のフォルダにあるクラスに最も注意を払います。 フォルダーにあるクラス、特に NAMESPACE がないクラスには注意を払ってください。 フォルダーにあるクラス、特に名前空間がないクラスに最も注意を払ってください。これらは大きな罠である可能性があります。 トラップです。私たちは、2つの拡張メソッドのオーバーロードの問題を経験しました。 拡張メソッドのオーバーロードの問題がありました。 名前空間がない静的クラスで、2つの拡張メソッドのオーバーロードという問題がありました。 はDateTime? (Nullable)を拡張します。 を拡張し、別のオーバーロードを呼び出しています。 を拡張し、DateTime自身を拡張する別のオーバーロードを呼び出します。拡張メソッドとして 別のオーバーロードを拡張メソッドとして呼び出す VS 2008のコンパイルを通過し ランタイムのみコンパイルエラーとなる。 (IIS使用時)となりました。他のオーバーロードの呼び出しを 他のオーバーロードの呼び出しを 拡張メソッドとして呼び出すことから、通常の静的メソッドとして呼び出すことに変更しました。 通常のスタティックメソッドとして呼び出すように変更する(同一クラス内での呼び出しの変更のみ。 同じクラス内の呼び出しを変更しただけで、他のクラスからの呼び出しは 他のクラスからの呼び出しは拡張 メソッド呼び出しのまま)で解決できましたが 明らかに、VS 2005で使用されていたほど安全ではありません。 VS 2005の時ほど安全ではないことは明らかです。特に クラスでは特に。

  • 更新2: 変換中、VS 2008 は "App_Code" を次のようにリネームします。 という名前に変更されます。この新しい名前は この新しい名前は醜く聞こえますが、名前を元に戻さないでください。で ウェブアプリケーションモデルでは、すべてのコードは1つのアセンブリになります。 は1つのアセンブリになります。ランタイムでは。 ウェブサーバーは、あなたがどのようなウェブプロジェクトタイプを使用しているのかを知りません。 プロジェクトの種類を知りません。しかし App_Code"フォルダにあるすべてのコードを受け取り、そのための新しいアセンブリを作成します。 そのための新しいアセンブリを作成します。このように という名前のフォルダーにコードがある場合、そのコードに対して新しいアセンブリを作成します。 という名前のフォルダーにコードがある場合、RUNTIME というコンパイル・エラーが発生します。 2つのアセンブリに同じ型が存在することになります。 VSで作成されたものと、IIS / ASP.NET Developmentで作成されたものです。 IIS / ASP.NET Development Serverで作成されたものです。これを避けるには それを避けるために、"Old_App_Code".を同じ名前のままにしておきます。 を同じ名前で残すか、または次の名前に変更してください。 ANYTHING EXCEPT: "App_Code"に変更します。このような このような"App_Code".フォルダには、いかなるコードも配置しないでください。 フォルダにコードを配置しないでください。 という名前のフォルダーを持たないようにしてください。 アプリケーションにそのような名前のフォルダを持たないようにしてください。

以前から知っていましたが、忘れていました。 ウェブサイトモデルを使用していないため、今は忘れています。 を長い間使用していないため、今は忘れています:(。