Проблема преобразования веб-приложений ASP.NET в веб-приложение - не удалось загрузить тип ClassName и задать пространства имен для всех существующих методов веб-страниц

1

Я преобразовал один огромный проект веб-сайта в проект веб-приложений, так как мы хотим иметь скомпилированный код в виде DLL для целей безопасности и следуем ниже в статьях MSDN:

http://blogs.msdn.com/b/webdev/archive/2009/10/29/converting-a-web-site-project-to-a-web-application-project.aspx

http://msdn.microsoft.com/en-us/library/aa983476%28v=vs.100%29.aspx

На веб-сайте имеется 1000 веб-страниц/файлов. Я разрешил все проблемы дублированных ссылок, классификаций классов и некоторых ошибок компиляции, возникших на этапе сборки решения. Из-за более раннего шаблона веб-сайта имена классов имеют следующий шаблон:

например, если UserMaster находится в папке admin/Operations/Masters, поэтому имя класса будет выглядеть следующим образом: admin_Operations_Masters_UserMaster.

Теперь веб-приложение успешно работает, и когда я пытаюсь запустить приложение, оно показывает "Нельзя загрузить тип" ClassName ", поэтому я выяснил, что проблема в том, что пространство имен отсутствует из-за более раннего шаблона веб-сайта.

Обнаружено в MSDN:

По умолчанию страницы и классы, созданные с использованием модели проекта веб-сайта Visual Studio, автоматически не включают пространство имен кода. Однако страницы, элементы управления и классы, созданные с использованием модели проекта веб-приложения Visual Studio, автоматически включают пространство имен кода. При преобразовании проекта веб-сайта в проект веб-приложения вам нужно будет добавить пространства имен в код.

У меня есть DEFAULT NAMESPACE в свойствах проекта.

Поэтому я попытался добавить пространства имен в весь проект через ReSharper → Refactor → Adjust Namespaces, но только для файлов.cs, а не для.aspx.cs и т.д. И поэтому он не работает.

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

Поэтому необходимо обходное решение для автоматического добавления пространств имен на страницах в соответствии с их структурой пути к папке.

Во-вторых,

То, что я сделал для тестирования, я завернул пространство имен по умолчанию на странице входа в проект, где я столкнулся с " не могу загрузить проблему типа ", добавленный также в атрибут Inherits. Затем было создано " Чистое решение", а затем " Восстановить решение". Но по-прежнему возникает одна и та же проблема.

Я не понимаю, почему DLL не обновляется с помощью класса страницы входа в систему.

Странно, когда я меняю Codebehind на CodeFile (атрибут Директивы по страницам), тогда страница работает очень хорошо. Его из-за исходного файла присутствует во время запуска проекта. НО я хочу использовать атрибут Codebehind, поскольку он скажет компилятору искать класс в DLL, а не в исходном файле.

Наконец, резюме:

У меня две основные проблемы:

  • Не удалось загрузить тип 'className'
  • Как автоматически добавлять пространства имен на страницах в соответствии с их структурой пути к папке.

Я уже искал здесь и общался с разными темами, но для меня ничего не работает. один предложил использовать функцию "Surround With" VS, но мне нужно идти один за другим на каждый файл, который НЕ ДОЛЖЕН прямо сейчас.

Так пробовал:

  • Установить путь DLL к "bin" вместо "bin\debug"
  • Проверьте конфигурацию сборки и ее x86. также DLL присутствует в корзине
  • Проверено все свойства проекта, и все в порядке. Убирали и перестраивали решение сотни раз. Также были очищены временные файлы ASP.NET.
  • Установите Build Action для "Компиляции" для файлов классов.cs
  • Невозможно установить действие Build для компиляции для aspx-страниц, поскольку они являются статическими html, и они должны быть установлены в "Content", который является по умолчанию Build Action.
  • Решение Resharper для добавления пространств имен, но не работает

Пожалуйста помоги....

Любая помощь будет оценена. Благодарю.

Теги:
namespaces
web-application-project

1 ответ

1
Лучший ответ

Решили проблему:

Раньше я пытался установить Build Action для "компиляции" для файлов классов.cs. Только и для всех файлов, связанных с компиляцией из файла .csproj, но он не работал из-за того, что сама страница aspx была установлена в Compile, которая не была обязательной.

Теперь я изменил действие Buid для компиляции, которое было содержимым для файлов.aspx.cs и.aspx.designer.cs.

и он решил проблему.

Например, например:

  • Решение 'TestWebApp1'
    • Проект "TestWebApp1" (веб-приложение ASP.NET)
    • свойства
    • Рекомендации
    • Данные приложения
    • Сценарии
    • Default.aspx(Build Action: Content)
      • Default.aspx.cs(Build Action: Compile)
    • SiteLayout.Master(Build Action: Content)
      • SiteLayout.Master.cs(Build Action: Compile)
    • Web.config

Источник: ни один из моих кодов "code behind" не вызван

Ещё вопросы

Сообщество Overcoder
Наверх
Меню