Tôi không phải là một nhà phát triển đặc biệt có kỹ năng trong thế giới Windows và tôi đã gặp phải một số vấn đề giải thích. Tôi hy vọng rằng trong sự thiếu hiểu biết của tôi, tôi đang thiếu một cái gì đó hiển nhiên.Lỗi Visual Studio dựng sẵn "một tuyên bố một phần của loại này tồn tại"
Tôi thấy mình phải đảo ngược biên dịch trang web/ứng dụng .NET được biên dịch trước. Reflection quản lý để có được tôi CodeFile của C# tôi cần, và tôi đã dành một chút tốt thời gian thay đổi tất cả các tài liệu tham khảo .aspx từ những điều như thế này:
<%@ page language="C#" autoeventwireup="true" inherits="someclassname, App_Web_Z8sdf" %>
để điều như thế này:
<%@ page language="C#" autoeventwireup="true" CodeFile="somefilename.aspx.cs" inherits="someclassname" %>
và di chuyển các tệp aspx.cs vào cùng thư mục với tệp .aspx.
Điều này đã cho tôi đến mức tôi có thể thực sự tải dự án dưới dạng có thể chỉnh sửa được trong Visual Studio. Tôi đã thử điều này với cả năm 2010 và 2008.
Hiện tại, tôi đang cố gắng xây dựng dự án này. Lỗi tôi nhận được là:
"Missing partial modifier on declaration of type 'someclassname'; another partial declaration of this type exists"
Đủ công bằng. Tôi hiểu rằng các lớp học có thể được khai báo ở nhiều nơi và mỗi lớp phải có từ khóa "một phần" để làm việc này. Vì vậy, tôi thêm từ khóa phần định nghĩa lớp trong aspx.cs tập tin mà các lỗi đang xảy ra trong. Đó là quản lý để thoát khỏi điều đó thông báo lỗi, và thay thế bằng
"The type 'someclassname' already contains a definition for 'some variable name".
Nó cư xử rõ ràng như có khác định nghĩa lớp ở đâu đó. Là chủ yếu là quản trị viên Unix, tôi bắt đầu tìm kiếm tất cả các tệp trong dự án cho các chuỗi phù hợp với tên của lớp đang được đề cập đến và tôi chỉ tìm thấy nó trong hai tệp và hai tệp. Tệp aspx chứa các dòng đầu tiên tôi trích dẫn và tệp aspx.cs tương ứng với tệp chứa định nghĩa lớp. Bây giờ, tôi đang bối rối.
Tôi đọc một số bài đăng trên diễn đàn cho biết Visual Studio sẽ tạo tệp "thiết kế" với các lớp một phần, có vẻ hứa hẹn, nhưng tôi không thấy các tệp thiết kế này, ngay cả khi tôi xem tất cả các tệp trong VS, Tôi nhìn vào các thư mục trên đĩa, hoặc thực sự bất cứ nơi nào khác. Rõ ràng, tôi đang thiếu một cái gì đó. Có lẽ tôi đã không thực hiện việc hoàn nguyên từ trang web được biên dịch trước một cách chính xác? Có thể có một số cài đặt trong web.config hoặc một số tệp khác mà tôi cần phải thay đổi?
Mọi trợ giúp sẽ được đánh giá cao.
Theo yêu cầu một phiên bản tổng quát của định nghĩa SomeClass
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");
}
}
Cập nhật này dường như là một kết quả của việc chuyển đổi từ một trang web trước khi biên soạn lại nguồn. Các tệp .aspx.cs chứa các định nghĩa trường điều khiển (nếu đó là thuật ngữ chính xác cho những gì tôi sẽ ngây thơ gọi là "định nghĩa biến") mà chúng không nên và thiếu tuyên bố một phần mà chúng cần phải có. Suy đoán một cách dữ dội, có vẻ như các định nghĩa thực sự được ngụ ý bởi tệp aspx, và vì vậy tệp aspx.cs không cần chúng. Rất cám ơn Dan Abramov và mọi người đã bình luận.
Bạn có thể đăng định nghĩa "someclass" không? – scottm
Tôi có thể đăng phiên bản tổng quát. – malcolmpdx
Tôi không phải là một WebForms guy nhưng bạn có thể thử biên dịch sau khi đã loại bỏ tất cả các lĩnh vực kiểm soát (chẳng hạn như 'form1')? Mặc dù vậy tôi có thể sai lầm khủng khiếp. –