C #: Как преобразовать проект веб-сайта в веб-проект - PullRequest
6 голосов
/ 16 апреля 2009

ОБНОВЛЕНИЕ: Все эти проблемы были для преобразования приложения веб-сайта в веб-проект в Visual Studio. Как только я закопался и нашел решение, я пометил ответ ниже.

По сути, если вы хотите обновить / переместить проект вашего веб-сайта в веб-проект, вы столкнетесь с рядом ошибок. Краткое руководство в ответе ниже. Спасибо всем за комментарии и помощь.

Старый вопрос и название ниже:

Как обернуть пространство имен xx {} во все файлы классов?

Как бы вы обернули пространство имен во все файлы кода позади веб-проекта (или любого проекта)?

namespace MyDomain
{
  // regular code here
}

Короче говоря ...

Я конвертировал проект, который был передан за границу. Более 20000 файлов в одном только «веб-проекте» для такого простого сайта (качает головой). Он был написан в vs2005 с использованием VB.NET и C # (да, оба компиляции). Первоначально это был веб-сайт. Я преобразовал его в веб-приложение, в основном из-за 8000 временных сборок, которые создаются при публикации.

Хорошо, я конвертирую в VS2008. Я преобразовал весь код в C #. Выглядит хорошо. Я перенес весь специальный код App_Code / VB и C # в отдельные сборки.

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

Но ... осталось более 5000 ошибок ... Помогите!

альтернативный текст http://eduncan911.com/blog/thumbnail/4-15-2009.6-00-13.PM.png

Может быть, есть другой способ? Вот пример фрагмента кода:

public partial class MyHomepage_MyStuff_MyPosts : SecurePage
{ ... }

Обратите внимание на имя класса MyHomepage_MyStuff_MyPosts. Это путь каталога к расположению файла в /MyHomepage/MyStuff/MyPosts.aspx.

Ошибка в том, что файл codebehind не может найти ссылку на используемый элемент управления. Такие как:

ctl_website_rpt.RowCount = _totalCount;

Это элемент управления (соглашение об именах), называемый "ctl_website_rpt" в файле ASPX. Страница aspx имеет в шапке:

<%@ Page Title="My Posts" Language="C#" 
  MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" 
  CodeFile="MyPosts.aspx.cs" 
  Inherits="MyHomepage_MyStuff_MyPosts" %>

Может быть, я могу сослаться на эту страницу в другом месте? Не меняя его на пространство имен?

namespace Website.MyHomepage.MyStuff
{
  public partial class MyPosts
  { ... }
}

<%@ Page Title="My Posts" Language="C#" 
  MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" 
  CodeFile="MyPosts.aspx.cs" 
  Inherits="Website.MyHomepage.MyStuff.MyPosts" %>

Ответы [ 2 ]

4 голосов
/ 03 мая 2009

Кстати, я нашел решение. Это проще, чем вы думаете.

Вы просто щелкаете правой кнопкой мыши по своему новому веб-проекту, и появляется опция «Преобразовать в веб-приложение». Это делает некоторые интересные вещи. Сначала создается автоматически созданный файл [file] .aspx.designer.cs. Это избавило меня от 99% моих ошибок, так как код не мог найти ссылку на элемент управления (см. Скриншот в моем вопросе выше).

Это также перезаписывает объявление <% @ Page%> в вашем aspx-файле для наследования от кода, лежащего в основе нового имени / пространства имен.

Все, что осталось, это некоторые проблемы со сборкой и сделано!

Как это:

1) Создайте новый веб-проект, скопируйте все файлы из старого проекта веб-сайта в новый веб-проект.

2) Исправьте все ссылки на ваши сборки, которые, как вы знаете, вам понадобятся.

3) Щелкните правой кнопкой мыши веб-приложение и выберите «Преобразовать в веб-приложение». Внимательно осмотрите журнал ошибок и предупреждений. Переконвертируйте по своему усмотрению, как только вы все исправите.

Если в файлах aspx или ascx отсутствует файл designer.cs, преобразование этого файла завершится неудачно. Исправьте ссылки, пространство имен и т. Д. И выполните преобразование.

Совет № 1 : убедитесь, что у вас есть все ссылки, добавленные до преобразования в веб-приложение. Иногда может произойти ряд ошибок.

Совет № 2 : Несмотря на то, что все выглядит так, как будто оно завершено, ищите ошибки после преобразования. Он покажет вам файлы, которые он не смог преобразовать, поэтому вам нужно поработать с ними.

Совет № 3 : Вы можете повторно преобразовать любой подкаталог или любой файл любое количество раз. Допустим, в # 2 было несколько ошибок, над которыми вы работали, вы можете повторно конвертировать этот файл или каталог несколько раз, пока не исправите его. Повторное преобразование не повредит существующему приложению.

1 голос
/ 16 апреля 2009

Я не могу придумать иного решения, кроме написания небольшого консольного приложения, которое бы просматривало все файлы и модифицировало их для вас.

...