将Angular 5添加到ASP.Net MVC 5应用程序中断构建

时间:2018-05-03 17:41:01

标签: asp.net-mvc angular asp.net-mvc-5 angular-cli csproj

设置:

  1. ASP.Net MVC 5应用程序(v4.5.2)。
  2. Angular(v5.2.0)在MVC应用程序中使用angular-cli(v1.7.4)。
  3. Angular app在www.mydomain.com/app上运行。
  4. 角度应用程序将加载到AppController的“索引”视图中。
  5. 使用BundleConfig.cs引用dist文件夹中必需的JS和CSS输出文件。
  6. 已修改构建过程以使用.csproj文件构建Angular应用程序。
  7. ng build正在使用-extract-css(-ec),因此Index.cshtml文件不必在开发和生产之间进行更改。
  8. 到目前为止,一切正常。
  9. 的.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 ------
    3. 我的解决方案:

      应用程序启动后,我通过命令行运行build -ec -w,一切正常。

      问题:

      如何将--watch (-w)添加到ng build -ec作为构建过程的一部分,而不是从命令行手动运行?

1 个答案:

答案 0 :(得分:3)

你不应该。

构建需要命令才能完成。即使您从构建中生成了一个观察过程,也无法控制该应用程序的生命周期。

所以csproj构建期间的单个构建是可以的,但是在构建完成之后,不应该留下额外的进程。根据您用于构建的工具,csproj文件甚至可以构建多次(设计时构建与实际构建)。

然而,您可以从应用程序内部运行角度命令,以便Angular Cli可以在应用程序运行时重建客户端部分。

对于ASP.NET Core,可以使用SPA服务轻松设置,该服务负责将Angular CLI与ASP.NET Core管道集成(2.0的可安装模板,集成在即将推出的2.1工具中)。见Use the Angular project template with ASP.NET Core