Я не очень опытный разработчик в мире Windows, и у меня есть проблема, которая требует некоторого объяснения. Я надеюсь, что в своем невежестве я упускаю что-то очевидное.
Мне пришлось откомпилировать предварительно скомпилированный веб-сайт / приложение .NET. Reflection удалось получить мне нужный мне 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, я начинаю искать во всех файлах проекта строки, соответствующие названию рассматриваемого класса, и нахожу его только в двух файлах и двух файлах. Файл aspx, который содержит первые строки, которые я цитировал, и файл aspx.cs, который ему соответствует, который содержит определение класса. Теперь я запутался.
Я прочитал некоторые сообщения на форуме, которые указывают, что Visual Studio будет создавать «дизайнерские» файлы с частичными классами в них, что казалось многообещающим, но я не вижу эти дизайнерские файлы, даже когда я просматриваю все файлы в VS, когда я посмотрите каталог на диске или вообще где-нибудь еще. Очевидно, я что-то упустил. Возможно, я неправильно выполнил восстановление с предварительно скомпилированного сайта? Может быть, в файле web.config или в другом файле есть какие-то настройки, которые мне нужно изменить?
Любая помощь будет принята с благодарностью.
По запросу обобщенная версия определения 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");
}
}
Обновление Похоже, это результат преобразования предварительно скомпилированного сайта обратно в исходный. Файлы .aspx.cs содержат определения полей управления (если это правильная терминология для того, что я наивно назвал бы «определениями переменных»), чего они не должны, и не имеют частичного объявления, которое они должны иметь. Дико выражаясь, кажется, что определения на самом деле подразумеваются файлом aspx, и поэтому файл aspx.cs не нуждается в них. Большое спасибо Дану Абрамову и всем, кто прокомментировал.