Я не особо опытный разработчик в мире Windows, и у меня есть проблема, требующая некоторых пояснений. Я надеюсь, что по моему незнанию я упускаю что-то очевидное.
Я обнаружил, что мне нужно откомпилировать предварительно скомпилированный веб-сайт / приложение .NET. Reflection удалось получить мне необходимый мне файл кода C #, и я потратил немало времени, изменив все ссылки .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"
Достаточно честно. Я понимаю, что классы могут быть объявлены в нескольких местах, и каждый должен иметь ключевое слово "partial", чтобы это работало. Поэтому я добавляю ключевое слово partial к определению класса в файле 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 они не нужны. Большое спасибо Дэну Абрамову и всем, кто оставил комментарий.