2009-04-15 13 views
6

更新:これらの問題はすべて、WebサイトアプリケーションをVisual StudioのWebプロジェクトに変換するためのものです。一度私が掘って、私は解決策を見つけた、私は以下の答えとしてマーク。C#:WebプロジェクトをWebプロジェクトに変換する方法

ウェブプロジェクトをWebプロジェクトにアップグレード/移動したい場合、基本的にいくつかのエラーが発生します。短いハウツーは以下の答えにあります。コメントありがとうございました。

旧質問とタイトルは以下の通りです:

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

Webプロジェクト(または任意のプロジェクト)のすべてのコードビハインドファイルに名前空間をラップするにはどうすればよいですか?

namespace MyDomain 
{ 
    // regular code here 
} 

かいつまんで...

私は海外に外部委託されたプロジェクトを変換されています。このようなシンプルなWebサイト(shakes head)のために、「Web」プロジェクトだけで20,000を超えるファイル。これは、VB.NETとC#を使用してvs2005で書かれました(はい、両方の複雑さ)。もともとはウェブサイトのアプリケーションでした。私はそれをWebアプリケーションに変換しました。これは主に、公開時に生成される8,000の "temp"アセンブリのためです。

いいえ、私はVS2008に変換しています。私はすべてのコードをC#に変換しました。いいね。私はすべての特別なApp_Code/VBとC#コードを別々のアセンブリに持ち込んだ。

今再びコンパイルしようとすると、膨大な数のエラーが発生したことが通知されます。コードビハインドファイルを名前空間にラップし、新しい名前空間を使用するようにusercontrolを更新することで、これらの問題を解決します。

しかし... 5000+エラーが発生しました...ヘルプ!

alt text 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

Fyi、私は解決策を見つけました。あなたが考えるより簡単です。

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

これもコードの後ろに新しい名前/名前空間だから継承するためにあなたのaspxファイル内<% @ページ%> declerationが再書き込みます。

すべてのことが残っていましたいくつかのアセンブリ参照の問題だったと行わ

HOW TOは、次のとおりです!

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

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

3)Webアプリケーションを右クリックし、[Webアプリケーションに変換]を選択します。エラーと警告ログを詳細に調べます。いったんあなたが物事を修正したら、いつでも改心してください。

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

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

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

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

1

私は、ファイルのすべてを通過し、あなたのためにそれらを修正するだろう小さなコンソールアプリケーションを書くよりも、他の解決策を考えることはできません。

+0

これは考えです。別の解決策を望んでいます(もっと詳細に質問を更新しました)。 – eduncan911

関連する問題