Как разместить резервный код в нескольких файлах?

Я сталкиваюсь с множеством несоответствий в отношении того, что будет правильно компилироваться и выполняться в среде Visual Web Developer 2008 Express, а что не удается на моем веб-сервере.

В частности, у меня есть программный код aspx и aspx.cs, а также ряд дополнительных файлов .cs в моем проекте Web Developer. Он отлично собирается и нормально работает под сервером разработки. Как только я загружаю файлы на свой сервер, программный код, кажется, не знает о других файлах .cs.

Как правильно заставить мое приложение aspx наследовать дополнительные файлы .cs?

--- Обновление --- Поскольку я на самом деле не нахожу нужный мне ответ, позвольте мне быть более точным в том, что я делаю:

У меня есть три файла:

Default.aspx

<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Import Namespace="UtilClasses" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Default.aspx.cs

public partial class _Default : Page { }

App_Code / UtilClasses.cs

namespace UtilClasses {
  public class AClass {
    public const int A = 1;
  }
}

В этом примере, если я попытаюсь выполнить одно из следующих действий, я получу ошибку компиляции на моем веб-сервере:

  • Ссылка на App_Code с помощью @Import
  • Вызовите содержащийся в нем код из внутреннего кода aspx.cs или
  • Вызовите код со страницы aspx.

Он отлично компилируется в Web Developer 2008. Решение представляет собой веб-сайт, который автоматически публикуется на моем веб-сервере через FTP. Точный список публикуемых файлов:

  • Default.aspx
  • Default.aspx.cs
  • App_Code / UtilClasses.cs
  • web.config

person Jesse Hallam    schedule 13.02.2009    source источник
comment
Какую версию Web Developer вы используете? Если вы используете Web Developer 2008 SP1, используете ли вы веб-приложение (скомпилированное в dll в папке / bin) или проект веб-сайта (скомпилированное на лету)?   -  person Zhaph - Ben Duguid    schedule 13.02.2009
comment
Это Web Developer 08, не уверен насчет пакета обновления. Я использовал веб-приложение, но решил, что веб-сайт лучше подходит для моих нужд. Он автоматически развертывается на моем ftp. cs файлы автоматически помещаются в App_Code, но я все равно получаю "что-то" не существует ошибок, когда я пытаюсь вызвать код из app_code   -  person Jesse Hallam    schedule 13.02.2009


Ответы (3)


Похоже, у вас проблема с развертыванием.

Просто опубликуйте (в меню сборки есть пункт публикации) свое веб-приложение / сайт в папку, а затем переместите файлы из этой папки на свой сервер.

Я думаю, у вас в каталоге есть старые файлы сборки и новые классы.

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

person Canavar    schedule 13.02.2009
comment
Публикация работает некорректно. Выручи меня. В случае проекта с .aspx, .aspx.cs и .cs, оба файла * .cs не публикуются. Выбираю Только файлы, необходимые для запуска ... - person Jesse Hallam; 13.02.2009
comment
cs файлы не публикуются, они включаются в ваши файлы сборки в каталог bin. если вы удалите все файлы со своего тестового сервера и скопируете все файлы в каталог публикации, он должен работать при тестировании в среде разработки. Думаю, ваша проблема в конфликте файлов. - person Canavar; 13.02.2009
comment
Возможно, тогда мне нужно что-то изменить в моем объявлении @Page. Когда я очищаю удаленную папку, а затем повторно публикую, моя страница выходит из строя с ошибкой парсера: The file '/test/testproj.aspx.cs' does not exist. - person Jesse Hallam; 13.02.2009
comment
Моя проблема была решена с помощью хостинговой компании. При этом я предпочитаю этот способ развертывания сайта ASP.NET. - person Jesse Hallam; 20.02.2009

Вы можете использовать частичные классы. Добавьте файл (* .cs) и определите свой класс как частичный. Таким образом, вы можете распространять свои методы, свойства и другие файлы.

person Sessiz Saat    schedule 13.02.2009

Это очень распространенная проблема организации кода в ваших веб-приложениях. Вот несколько советов, которые помогут вам решить вашу проблему.

  1. Если вы используете один проект и это проект веб-сайта ASP.net, поместите ваши файлы .cs в папку app_code.

  2. Используйте пространства имен с умом и отслеживайте, что находится в каком пространстве имен. Если у вас есть что-то вроде Resharper, это спасает эту задачу.

  3. В идеале в вашем веб-проекте должны быть только классы, связанные со страницей, и служебные классы. Создавайте библиотеки с помощью C # express для других функций. Протестируйте эти библиотеки с помощью NUnit / MbUnit или подобных им.

  4. Если у вас есть сомнения, работает ли что-то на Cassini, но не в IIS. Единственное решение - разработчик или локальный IIS.

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

person Perpetualcoder    schedule 13.02.2009
comment
Не могу заставить работать папку App_Code. Все, что я туда помещаю, не видно моему приложению ни в Web Developer, ни во время выполнения. Я просто получаю ошибки времени выполнения. Такого-то не существует в текущем контексте. - person Jesse Hallam; 13.02.2009
comment
Вы не можете установить надстройки, такие как ReSharper, в экземпляр Web Developer, только в полной версии Visual Studio. - person Zhaph - Ben Duguid; 13.02.2009