Добавление Angular 5 в ASP.Net MVC 5 приложение ломает сборку - PullRequest
0 голосов
/ 03 мая 2018

Настройка:

  1. Приложение ASP.Net MVC 5 (v4.5.2).
  2. Angular (v5.2.0) с использованием angular-cli (v1.7.4) внутри приложения MVC.
  3. Приложение Angular работает на www.mydomain.com/app.
  4. Угловое приложение загружается в индексном представлении AppController.
  5. Необходимые выходные файлы JS и CSS в папке dist указываются с помощью BundleConfig.cs.
  6. Процесс сборки был изменен для сборки приложения Angular с использованием файла .csproj.
  7. ng build использует -extract-css (-ec), поэтому файл Index.cshtml не должен переключаться между dev и production.
  8. До этого момента все работало правильно.

.csproj:

<Target Name="NgDebug" BeforeTargets="Build" Condition="'$(Configuration)' == 'Debug'">
    <Exec WorkingDirectory="$(ProjectDir)admin-client" Command="ng build -ec" />
  </Target>
  <Target Name="NgRelease" BeforeTargets="Build" Condition="'$(Configuration)' == 'Release'">
    <Exec WorkingDirectory="$(ProjectDir)admin-client" Command="ng build --prod" />
  </Target>

Проблема:

  1. При добавлении --watch (-w) к Command="ng build -ec" сборка зависает бесконечно и не выдает никаких ошибок.
  2. Зависит вывод сборки: 1>------ Build started: Project: CorpNet.Admin.Web, Configuration: Debug Any CPU ------

Мое решение:

После запуска приложения я запускаю ng build -ec -w через командную строку и все работает правильно.

Вопрос:

Как добавить --watch (-w) к ng build -ec как часть процесса сборки вместо запуска его вручную из командной строки?

1 Ответ

0 голосов
/ 04 мая 2018

Вы не должны.

Для сборки требуется команда. Даже если вы создадите процесс наблюдения из сборки, у вас нет возможности контролировать жизненный цикл этого приложения.

Так что единственная сборка во время сборки csproj - это нормально, но после ее завершения никакие дополнительные процессы не должны быть оставлены. В зависимости от того, какой инструмент вы используете для сборки, файл csproj может даже быть собран несколько раз (сборки во время разработки или реальные сборки).

Однако вы можете запускать угловые команды из своего приложения, чтобы Angular Cli мог перестраивать вашу клиентскую часть во время работы приложения.

Для ASP.NET Core это легко настроить с помощью SPA-сервисов, которые занимаются интеграцией Angular CLI с конвейером ASP.NET Core (устанавливаемые шаблоны для 2.0, интегрированные в предстоящие инструменты 2.1). См. Использование шаблона проекта Angular с ASP.NET Core

.
...