6

更新:これらの問題はすべて、WebサイトアプリケーションをVisualStudioでWebプロジェクトに変換するためのものでした。掘り下げて解決策を見つけたら、以下の答えとしてマークしました。

基本的に、WebサイトプロジェクトをWebプロジェクトにアップグレード/移動する場合は、いくつかのエラーが発生します。簡単なハウツーは以下の答えにあります。コメントと助けてくれてありがとう。

古い質問とタイトルは以下のとおりです。

名前空間xx{}をすべてのクラスファイルにラップする方法は?

Webプロジェクト(または任意のプロジェクト)内のすべての分離コードファイルに名前空間をどのようにラップしますか?

namespace MyDomain
{
  // regular code here
}

短編小説...

海外に委託したプロジェクトを改造しています。このような単純なWebサイト(首を横に振る)の場合、「web」プロジェクトだけで20,000を超えるファイル。これは、vs2005でVB.NETとC#を使用して作成されました(はい、両方ともコンパイルされています)。もともとはウェブサイトのアプリケーションでした。主に、公開時に生成される8,000の「一時」アセンブリのために、これをWebアプリケーションに変換しました。

はい、VS2008に変換しています。すべてのコードをC#に変換しました。いいね。すべての特別なApp_Code/VBおよびC#コードを個別のアセンブリに取り込みました。

もう一度コンパイルしようとすると、膨大な数のエラーが表示されます。コードビハインドファイルを名前空間でラップし、新しい名前空間を使用するようにユーザーコントロールを更新することで、これらを修正します。

しかし...残り5000以上のエラー...助けて!

代替テキストhttp://eduncan911.com/blog/thumbnail/4-15-2009.6-00-13.PM.png

多分別の方法がありますか?コードハインドのサンプルスニペットは次のとおりです。

public partial class MyHomepage_MyStuff_MyPosts : SecurePage
{ ... }

クラス名MyHomepage_MyStuff_MyPostsに注意してください。これは、/ MyHomepage / MyStuff/MyPosts.aspxにあるファイルの場所へのディレクトリパスです。

エラーは、分離コードファイルが使用されているコントロールへの参照を見つけることができないことです。そのような:

ctl_website_rpt.RowCount = _totalCount;

これは、ASPXファイル内の「ctl_website_rpt」と呼ばれるコントロール(命名規則)です。aspxページのヘッダーには次のものがあります。

<%@ Page Title="My Posts" Language="C#" 
  MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" 
  CodeFile="MyPosts.aspx.cs" 
  Inherits="MyHomepage_MyStuff_MyPosts" %>

たぶん、このページを他の場所で参照できる方法はありますか??の名前空間に変更せずに

namespace Website.MyHomepage.MyStuff
{
  public partial class MyPosts
  { ... }
}

<%@ Page Title="My Posts" Language="C#" 
  MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" 
  CodeFile="MyPosts.aspx.cs" 
  Inherits="Website.MyHomepage.MyStuff.MyPosts" %>
4

2 に答える 2

4

Fyi、私は解決策を見つけました。思ったより簡単です。

新しいWebプロジェクトを右クリックするだけで、「Webアプリケーションに変換」のオプションがあります。これはいくつかの興味深いことをします。まず、[file].aspx.designer.cs自動生成ファイルを作成します。これにより、エラーの99%が解消されました。これは、コードビハインドがコントロールへの参照を見つけられなかったためです(上記の質問のスクリーンショットを参照)。

これにより、aspxファイルの<%@ Page%>デクレレーションが、コードビハインドの新しい名前/名前空間から継承するように書き直されます。

残ったのは、いくつかのアセンブリ参照の問題と完了だけでした。

ハウツーは:

1)新しいWebプロジェクトを作成し、古いWebサイトプロジェクトから新しいWebプロジェクトにすべてのファイルをコピーします。

2)必要になることがわかっているアセンブリへのすべての参照を修正します。

3)Webアプリケーションを右クリックし、[Webアプリケーションに変換]を選択します。エラーと警告のログを注意深く調べてください。修正したら、自由に再変換してください。

aspxまたはascxファイルにdesigner.csファイルがない場合、そのファイルでの変換は失敗しました。参照、名前空間などを修正し、再変換します。

ヒント1:Webアプリケーションに変換する前に、すべての参照が追加されていることを確認してください。多くのエラーが発生する場合があります。

ヒント2:完了したように見えますが、変換後にエラーを探します。変換できなかったファイルを指すので、それらで作業する必要があります。

ヒント3:任意のサブディレクトリまたは任意のファイルを何度でも再変換できます。修正しようとしていた#2で複数のエラーが発生した場合、修正するまでそのファイルまたはディレクトリを複数回再変換できます。再変換しても、既存のアプリケーションに悪影響はありません。

于 2009-05-03T16:55:16.787 に答える
1

すべてのファイルを調べて変更する小さなコンソールアプリを作成する以外に、解決策は考えられません。

于 2009-04-15T22:14:46.387 に答える