Как конвертировать ASP.NET сайт к ASP.NET веб-приложение



У меня есть ASP.NET 3.5 сайт (visual studio lingo), но сайт продолжает расти и выглядит довольно ковбойским среди прочего. Я бы хотел, чтобы это было преобразовано в веб-приложение (пространства имен и все).



Это то, что можно легко сделать в Visual Studio? Если нет, есть ли какие-либо другие инструменты, которые могли бы создать все пространства имен и т. д. автоматически?

727   7  

7 ответов:

Ну, оказывается, что опция " конвертировать в веб-приложение "не существует для"веб-сайтов". Опция " конвертировать в веб-приложение "существует только для" веб-приложений"!!!!

[выделено мной]

Итак, вот в чем дело, чтобы сделать преобразование, вам нужно:

  • Добавить новый "веб-приложение" для вашего решения против 2008 (Файл->Добавить->новый Проект - >C# - > Web - >ASP.NET паутина Приложение.)

  • после этого, скопируйте все файлы в старом "сайте" только создал "веб-приложение", и переопределите все файлы, созданные в нем по умолчанию

  • следующий шаг является самым уродливым, вам нужно "вручную" добавить ссылки в вашем "веб-сайте" на новый " веб-сайт приложение." Я думал, что VS 2008 Игрушка PowerCommands сделает это для меня как это делает копирование ссылок из других типы проектов, но это не так. У вас есть чтобы сделать это самостоятельно, вручную, и вы должны быть осторожны в этом шаге если у вас есть несколько версий та же сборка (как AJAXToolkit в моем case) или сборки, которые имеют оба GAC и локальные версии или около того.

  • продолжайте повторять последний шаг и пытаться построить "веб-приложение". Вы будете продолжать получать ошибки, как " '....- неизвестное пространство имен. Вы отсутствует ссылка на сборку? ". Делать конечно у вас нет ни одного из них, кроме те, где '....'заменяется на Идентификаторы используемых серверных элементов управления. В другими словами, продолжайте добавлять ссылки и проект пока только ошибки, которые существуют из-за недостающий.ДИЗАЙНЕР.CS или .ДИЗАЙНЕР.Глаг файлы.

  • после этого перейдите в корневой узел проекта "веб-приложение" в VS 2008 обозреватель решений и справа нажмите на нее, затем вы найдете опция "конвертировать в веб-приложение". Что это вариант на самом деле внесение небольших изменений в " @страницу" и директивы" @Control " страниц и элементы управления и создание необходимых .ДИЗАЙНЕР.CS или .ДИЗАЙНЕР.VB файлов.

  • попробуйте снова создать "веб-приложение". Если вы получаете ошибки, посмотрите, что ссылки могут отсутствовать и / или идти нажмите кнопку " Конвертировать в веб-приложение" снова. Иногда, если есть какие-либо ошибки кроме тех, которые вызваны отсутствием Дизайнерские файлы, не все страницы/элементы управления будут иметь те Дизайнерские файлы, созданные для них. Исправление проблемы не конструктора и нажмите кнопку " Конвертировать в веб-приложение" опять же должен сделать работу для этого.

  • Как только вы закончите успешную сборку VS, вы должны быть готовы к работе. Начните тестирование веб-приложения. При необходимости можно щелкнуть правой кнопкой мыши корневой узел проекта "веб-приложение" в VS 2008 Обозреватель решений и нажмите кнопку "Свойства" Затем перейдите на вкладку " Web" чтобы установить "веб-приложение" в a виртуальный папка в IIS (можно создать новый виртуальный каталог в ПРОТИВ.) Если вы хотите использовать IIS виртуальный каталог, который старый "сайт" необходимо удалить это из IIS в первую очередь.

  • обновление: при тестировании ваших страниц, обратите наибольшее внимание на классы в Папка "App_Code", особенно те без пространства имен. Они могут быть большими ловушка. У нас была проблема с двумя метод расширения перегружает в том же самом статический класс, который не имел пространства имен, один расширяет DateTime? (Обнуляемого) и вызывает еще одну перегрузку, что расширяет сам DateTime. Вызов другая перегрузка как метод расширения прошел VS 2008 компиляцию и дал нам ошибка компиляции только во время выполнения (с IIS.) Изменение вызова на другая перегрузка от вызова его как метод расширения для вызова его как обычный статический метод (только изменение вызов в том же классе, требует от другие классы остались расширением вызовы методов) действительно решили эту проблему, но ясно, что это не так безопасно, как раньше чтобы быть в VS 2005. Особенно с классы без пространств имен.

  • Update2: во время преобразования VS 2008 переименовывает ваш "App_Code" в "Old_App_Code". Это новое имя звучит некрасиво, но не переименовывайте его обратно. В "модель веб-приложения", весь код будет в одной сборке. в Runtime, веб-сервер не знает, что веб тип проекта, который вы используете. Это взять весь код в папке "app_code" и создайте для него новую сборку. Этот кстати, если у вас есть код в папке "App_Code", вы будете в конечном итоге с RUNTIME ошибки компиляции того же типа существует в двух сборках, одна из которых созданные против, и один созданный IIS / ASP.NET сервер разработки. К избегать этого. оставить "Old_App_Code" с тем же именем, или переименовать его в Ничего, кроме: "сред". Не разместить код в таких "сред" папка и предпочтительно не имеют папка с таким именем в вашем " web приложение" в все.

Я знаю это с тех пор, но забыл его теперь, как я не использовал" сайт " модель надолго.(:

преобразование проекта веб-сайт проекта веб-приложения в Visual студии в MSDN

если ваш сайт приложение растет.. лучше разбить его на несколько проектов. Преобразование из проекта веб-сайта в проект веб-приложения не очень поможет.

Если у вас возникли проблемы с созданием нового проекта веб-приложения, проверьте свойства файла в Visual Studio всех классов "helper". Для проекта, который я преобразовывал, действие сборки было установлено в Content, тогда как оно должно было быть скомпилировано.

я столкнулся с теми же проблемами изначально. После следования за профессионалом Wrox ASP.NET 4.0 книга, я нашел следующее решение для моего случая.

Я создал новое веб-приложение. Скопировал все файлы веб-сайта в папку веб-приложения. Щелкните правой кнопкой мыши на приложении и выберите команду преобразовать в веб-приложение.

вы можете спросить, почему вам нужно преобразовать веб-приложение в веб-приложение. Ответ в том, что когда вы создаете сайт, вы просто код .cs-файл где-либо требуется. Веб-приложение, однако объявляет .дизайн.cs (or .VB) и является .cs-файл для раздела кода и дизайна автоматически.

далее: удалите все ссылки вручную, такие как атрибут' Inherits ' в директиве PAGE, на другие файлы на вашем веб-сайте, поскольку пространства имен будут заботиться о централизованной ссылке на классы.

Я также столкнулся с проблемой, так как я не включил папку OBJ и BIN в свой проект. Если вы считаете, что вам не хватает папок BIN и OBJ, просто нажмите на значок показать все файлы в обозревателе решений щелкните правой кнопкой мыши на недостающие папки и добавить в проект. (чтобы убедиться, что они компилируются с проектом.)

обновление: Как указывает @deadlychambers в комментариях: вы можете искать везде, делая "Ctrl + Shift + F", а затем искать Inherits="(.*?)". Это позволит найти все вхождения и, вероятно, сэкономить вам некоторое время!

создать новое веб-приложение в VS 2010.
1. С помощью Проводника Windows скопируйте все файлы в папку проекта.
2. В обозревателе решений VS 2010 отображаются все файлы.
3. Выберите файлы и папки - Правой Кнопкой Мыши включить в проект.
4. Щелкните правой кнопкой мыши обозреватель решений проекта и выберите Преобразовать в веб-приложение.

есть довольно много небольших различий, таких как папка App_Code будет переименована в old_app_code-это удивительно не вызывает никаких ошибок. Имя типа в источниках данных объекта и наследует тег @Page может потребоваться [имя проекта]. префикс добавляется глобально. Например, если ваше имя типа "BusinessLogic.OrderManager " и Ваше имя проекта InventorySystem вам нужно будет изменить его на InventorySystem.BusinessLogic.OrderManager. Также несколько изменений отображения, таких как обязательные поля валидаторы по умолчанию больше не красный шрифт, они по умолчанию черный.

теперь я успешно перенес один проект веб-сайта в веб-приложение, и есть тихие несколько gotchas, чтобы искать.

наличие ReSharper в вашем распоряжении очень помогает в рефакторинге файлов aspx.

  1. настройте свое решение и создайте пустое веб-приложение
  2. копировать все файлы через
  3. файлы aspx в проектах веб-сайтов не имеют namspace. Оберните свои классы в соответствующие пространства имен
  4. в ходе копируя, все мои страницы в подпапках были переименованы в мое имя проекта и имя папки, поэтому я получил 40ish public partial class FolderName_Projectname : Page при необходимости переименовать все файлы с помощью Resharper или вручную. Если вы столкнулись с несколькими ошибками, как "There is already a member Page_Load() defined", это, скорее всего, связано с неправильными именами классов и дублированием
  5. после добавления пространства имен
  6. заменить CodeFile на всех страницах aspx с Codebehind и особенно обратите внимание на файлы i вашей подпапки. Убедитесь, что Inhertis="" не содержит относительный путь. Ваши пространства имен позаботятся обо всем. Так что правильный формат Inherits="Namespace.classname". Если ваш класс имеет пространство имен NaSpa и имя файла foo.cs это было бы Inherits="NaSpa.foo"

  7. после того, как вы подготовили все свои файлы (не забудьте свои главные страницы), запустите "конвертировать в веб-приложение". Если вы столкнулись с ошибками после этого, промойте и повторите. Если вы столкнулись с ошибками типа "TextBoxName не может быть найден вам не хватает ссылки", убедитесь, что вы не забыли очистите свои страницы aspx. Хорошим индикатором является проверка автоматически сгенерированных файлов конструктора. Если TextBoxName не появляется там, преобразование не удастся.

  8. разрешить все отсутствующие зависимости.
  9. построить

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

Comments

    Ничего не найдено.