Как провести рефакторинг точки входа при перенацеливании приложения .NET Core ASP на .NET 4.6.1 - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь настроить проект с ASP.NET MVC WebApi и интерфейсом Angular 6. Проект должен быть нацелен на .NET 4.6.1, так как у меня нет кроссплатформенных требований. Тем не менее, я хочу использовать шаблон базового проекта .NET, так как в нем есть несколько характеристик, которые мне нужны для моей процедуры разработки и развертывания:

  • Нет явного управления файлами в VS, т.е. мне не нужно добавлять / удалять файлы в VS. Структура проекта идентична файловой структуре на диске и обновляется в реальном времени
  • Каталог wwwroot, который по умолчанию используется IIS в качестве корня приложения
  • Хорошая организация ссылок, включая пакеты npm

Пока что я настроил большую часть его, используя основной шаблон проекта ASP.NET из Visual Studio. Я сделал следующее:

  1. Создать проект из шаблона VS
  2. Изменена цель с netcoreapp2.1 на net461
  3. Удалены ссылки на ядро ​​.NET и добавлены сборки ASP.NET MVC

References

  1. Удалены все классы запуска, относящиеся к .NET Core

  2. Рефакторинг моего кода (контроллеры API для классов .NET 4.6.1, т.е. IHttpActionResult (.NET 4.6.1 вместо ActionResult (ядро .NET)

Нет, мне нужно восстановить загрузчик приложения, и я застрял. Я создал файл global.asax, как в обычном приложении ASP.NET. При сборке компилятор выдает ошибку, что Program.cs не содержит статический метод Main() в качестве точки входа (что имеет смысл, поскольку я удалил его на шаге 4).

Далее я попытался создать точку входа, которая запускает приложение, определенное в global.asax.cs:

public class Program
{
  public static void Main(string[] args)
  {
      var application = new WebApiApplication();
      application.Init();
      Console.ReadLine();
  }
}

с global.asax.cs:

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
}

Приложение компилируется и запускается. Браузер запущен. Тогда ничего не происходит.

Мой главный вопрос:

Как мне провести рефакторинг точки входа проекта .NET Core ASP после изменения цели на .NET 4.6.1?

Я на правильном пути с моим подходом? Я благодарен за ответы, а также за ссылки на ресурсы, которые объясняют тему.

и связанных с ним:

Является ли, с учетом моих требований выше, правильным способом переназначения основного приложения .NET в .NET 4.6.1 для получения структуры и поведения основного проекта .NET в Visual Studio?

1 Ответ

0 голосов
/ 26 июня 2018

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

Идея ASP.NET Core заключается в том, что вы можете настраивать таргетинг на .NET Core или .NET Framework по своему усмотрению без каких-либо изменений. На самом деле, нацеливание на .NET Framework из приложения ASP.NET Core чрезвычайно просто:

  1. Выберите шаблон веб-приложения Базовое веб-приложение ASP.NET.
  2. Убедитесь, что выбран .NET Framework:

enter image description here

Затем вы можете выбрать нужную версию .NET Framework в опциях проекта.

Кроме того, если вы решите, что хотите поддерживать как .NET Core, так и .NET Framework, редактировать csproj так же просто, как включить обе цели:

  1. Удалите атрибут <TargetFramework>:

    <TargetFramework>net471</TargetFramework>
    
  2. Добавьте атрибут <TargetFrameworks>:

    <TargetFrameworks>net471;netcoreapp2.0</TargetFrameworks>
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...