SharpDevelop - разорвана ссылка между файлами .aspx и .aspx.cs.

Я только начал использовать SharpDevelop и пытаюсь преобразовать проект веб-сайта Visual Studio Express в проект SharpDevelop. Мне удалось создать прекрасное решение и проект внутри него. Между прочим, это проект веб-форм ASP.NET на C #. Просто простые aspx страницы с внутренним кодом C # и .asmx веб-сервисом. Ничего особенного и, по сути, довольно старомодного, отлично работающего в Visual Studio.

Мне нравится среда SharpDevelop, поэтому, пожалуйста, не отвечайте «почему бы вместо этого не использовать Visual Studio» (у меня есть причины). Но вот моя проблема:

SharpDevelop не связывает .aspx файлы с их .aspx.cs аналогами. Таким образом, вместо обозревателя решений, показывающего MyPage.aspx, который вы затем расширяете, чтобы увидеть под ним MyPage.aspx.cs, вы видите их как два отдельных отдельных файла, расположенных рядом друг с другом и не связанных между собой.

И когда я компилирую решение, я получаю сообщение об ошибке, потому что программный код не может привязать себя к странице aspx и не распознает имена элементов управления. (Пример ниже взят с моей страницы Contact.aspx, но это происходит на каждой странице, где у меня есть какой-либо элемент управления asp.net на стороне сервера).

The name 'EmailAddress' does not exist in the current context (CS0103) - Contact.aspx.cs:52,100

Теперь имейте в виду, что этого никогда не было в Visual Studio, поэтому что-то пошло не так в моем решении SharpDevelop. Ошибка возникает в любом месте выделенного кода (файл .aspx.cs), который относится к:

EmailComments.Text

Вещи, которые я уже проверил:

1) Директива @Page верна, а имя Inherits совпадает с именем класса.

2) Имена файлов .cs и .aspx и имена классов совпадают.

3) Версия .NET Framework - 4.5 (имеет ли это значение?)

4) Я пробовал явно объявлять элементы управления asp.net в выделенном коде, и да, это предотвращает ошибку, однако связь между файлами остается нарушенной, и почему мне все равно нужно объявлять элемент управления в фоновом коде? Никогда не использовал в Visual Studio, и там все работало нормально.

Как ни странно, во всем моем решении есть один файл, в котором нет этой проблемы (файлы aspx и aspx.cs связаны нормально), и это страница default.aspx. В этом нет ничего особенного. Единственное, что я вижу, это то, что это имя файла в нижнем регистре, а остальные - в смешанном. (Конечно, это не актуально?)

Я был бы очень признателен за помощь от всех, кто знаком с SharpDevelop или, если это более общая проблема .net, сообщите мне. Мне кажется, что я забываю что-то базовое, что заставит меня работать.

Большое спасибо за любую помощь.

ОБНОВЛЕНИЕ: мне удалось связать файлы .aspx и .aspx.cs, выполнив следующие действия: Перетащите файл .aspx.cs в файл .aspx в проводнике решений. Сделайте это для каждой пары файлов. Затем сохраните и закройте решение и снова откройте, и они останутся связанными. НО, ошибка остается такой, как указано выше, потому что программный код не распознает элементы управления, упомянутые в нем.


person Owen    schedule 30.07.2014    source источник


Ответы (1)


У вас может быть веб-сайт или проект «веб-приложение». Есть различия в том, как между ними устроен код программной части. Что наиболее важно, вам может понадобиться CodeBehind вместо атрибута CodeFile в директиве вашей страницы. См. http://msdn.microsoft.com/en-us/library/vstudio/dd547590(v=vs.100).aspx#summary_of_differences.

Надеюсь это поможет.

person Gedas Kutka    schedule 30.07.2014
comment
Спасибо за быстрый ответ - person Owen; 30.07.2014
comment
SharpDevelop предлагает 2 типа решений C #: веб-страницу ASP.Net и веб-службу ASP.Net. Я использую первый из них. Из вашего ответа я предполагаю, что мне придется внести некоторые изменения, если я спущусь по этому корню, во-первых, мне придется использовать CodeBehind вместо CodeFile в директиве страницы. (Действительно, сейчас я использую CodeFile) - person Owen; 30.07.2014
comment
Я не знаком с SharpDevelop, поэтому подхожу к этому с общей точки зрения ASP.NET - ASP.NET поддерживает 2 типа проектов веб-сайтов (веб-сайт и веб-приложение), и я не знаю, какой из них использует SharpDevelop. Самый простой способ узнать, создал ли SharpDevelop файл ProjectName.csproj в папке проекта. - person Gedas Kutka; 31.07.2014