2011-07-28 11 views
5

は、私は、Windowsの世界では、特に熟練した開発者ではないよ「このタイプの別の部分的な宣言が存在している」、と私はいくつかの説明を要する問題を持っています。私は私の無知で、何かが明らかでないことを望んでいると思っています。.NETのVisual Studioビルドエラーが

私は自分自身がプリコンパイルされた.NET Webサイト/アプリケーションを逆コンパイルすることが分かりました。リフレクションは私が必要なC#のCodeFile年代を得ることができ、そして、私はこのようなことから、すべての.aspx参照変える時間の良いビットを過ごした。このようなことに

<%@ page language="C#" autoeventwireup="true" inherits="someclassname, App_Web_Z8sdf" %> 

を:

<%@ page language="C#" autoeventwireup="true" CodeFile="somefilename.aspx.cs" inherits="someclassname" %> 

とaspx.csファイルを.aspxファイルと同じディレクトリに移動します。

これは私が実際にVisual Studioで多少編集可能な形でプロジェクトを読み込むことができポイントに私を得ました。私は2010年と2008年

さて、しかし、私はこのプロジェクトをビルドしようとしてるの両方でこれを試してみました。私が得ているエラーは:

"Missing partial modifier on declaration of type 'someclassname'; another partial declaration of this type exists" 

かなり十分です。私はクラスが複数の場所で宣言でき、それぞれが "部分的"なキーワードを持っていなければならないことを理解しています。だから私は別がありますようにそれは明らかに動作しています、そのエラーメッセージを取り除くために管理こと。エラーがで発生していることをファイルaspx.csにクラス定義に部分的なキーワードを追加し、

"The type 'someclassname' already contains a definition for 'some variable name". 

と交換しますどこかクラス定義。主にUnix管理者であるため、問題のクラスの名前と一致する文字列をプロジェクト内のすべてのファイルから検索し始めます。正確には2つのファイルと2つのファイルしか見つけられません。私が引用した最初の行を含むaspxファイルと、クラス定義を含むファイルに対応するaspx.csファイル。今、私は混乱しています。

Visual Studioが有望な部分クラスを含む「デザイナー」ファイルを作成することを示すいくつかのフォーラム投稿を読みましたが、VS内のすべてのファイルを表示してもこれらのデザイナーファイルは表示されません私はディスク上のディレクトリを見ています。明らかに、私は何かが欠けている。おそらく私は、事前にコンパイルされたサイトからの再構成を正しく行わなかったでしょうか?たぶんweb.configや他のファイルに変更が必要な設定がいくつかありますか?

ご協力いただければ幸いです。要求ごと

工ass定義

using System; 
    using System.Web; 
    using System.Web.Profile; 
    using System.Web.SessionState; 
    using System.Web.UI; 
    using System.Web.UI.HtmlControls; 
    using System.Web.UI.WebControls; 

    public class Some_Class_Name : Page, IRequiresSessionState 
    { 
     /// a bunch of variables defined like this 
     protected HtmlForm form1; 

     ///a bunch of protected methods defined similarly to this 

     protected void LinkButtonReturn_Click(object sender, EventArgs e) 
     { 
      this.Session.Clear(); 
      base.Response.Redirect("Default.aspx"); 
     } 

} 

の一般化バージョンを更新これがソースに、プリコンパイルサイトからの変換の結果であると思われます。彼らはいけない、と彼らが持っている必要があることを部分的に宣言が不足している(それは私が単純に「変数の定義」と呼ぶもののために正しい用語の場合).aspx.csファイルは、制御フィールドの定義が含まれています。わざわざ推測すると、aspxファイルで定義されているように見えるので、aspx.csファイルには必要ありません。ダン・アブラモフと他のすべての人に感謝します。

+0

「someclass」定義を投稿できますか? – scottm

+0

一般化されたバージョンを投稿できます。 – malcolmpdx

+0

私はWebFormsの人ではありませんが、すべてのコントロールフィールド(form1'など)を削除した後でコンパイルを試すことはできますか?私はひどく間違っているかもしれません。 –

答えて

2

私はひどくオフ点かもしれませんが、私は、コンパイラがaspxコード自体に基づいて部分クラスを生成疑い。これが当てはまる場合、そのようなクラスには明らかにform1のようなフィールドが含まれます。

すべてのコントロールフィールド宣言を削除し、これが役立つかどうかを確認します。私はWebFormsの人ではないので、これは推測です。

+0

あなたが知っている、あなたはそれを釘付けにしたかもしれません。 Reflectionで再構築したバージョンと同じコードの古いバージョンとを比較し、aspx.csファイルにはコントロールフィールドの定義がありません。それらを削除しますが、partialキーワードをそのまま残しておくと(これは古いバージョンのコードにもあります)、競合が解決されたように見えます。ありがとう!私は間違いなくこれが少なくとも問題のこの部分に答えたと言うでしょう。 – malcolmpdx

4

この質問は少し古くなっていますが、Reflectorを使用して.NETコードを逆コンパイルすると同様の問題が発生しています。

これらのエラーが発生する理由は、ASPXページの "CodeFile = ..."ページ指示文が原因です。 ASP.NETがCodeFileディレクティブを見ると、デザイナファイル(コントロール定義を持つ部分クラス)が自動的に生成されます。 CodeFileディレクティブをCodeBehindディレクティブに変更すると、すべての問題が解決されました。

これは他の人に役立つことを願っています。

+0

+1 .designerファイルを削除して問題を解決しました。クラス名が宣言されている場所は2つだけです。 –

0

WCFを使用したWebサービススタブを実装している間に、これに関連していますがまったく似ていない問題が発生しました。設計プロトタイプ用のWebサービススタブとプロキシを作成している間、私は誤って自動的に生成されたコードをサービス定義コードと同じ名前空間に配置します。

私の解決策は、自動生成されたクライアントプロキシを自身の名前空間に移動することでした。すべてがうまくいっていました。

関連する問題