代码之家  ›  专栏  ›  技术社区  ›  lonix

ASP.NET Core 2.2和自定义目录结构的角度模板

  •  0
  • lonix  · 技术社区  · 7 年前

    模板的默认结构将所有内容放在一个位置,如下所示:

    /
      bin/
      obj/
      ClientApp/
      myproject.csproj
      Startup.cs
      etc.
    

    我的结构有许多库和角度应用程序,即monorepo,因此它必须更有条理:

    /
      libs
        client
        client2
        server
          bin/
          obj/
          myproject.csproj
          Startup.cs
        lib1
        lib2
    

    我编辑了各种参考资料来反映这种结构,最重要的是 Startup.cs :

    services.AddSpaStaticFiles(configuration => {
      configuration.RootPath = "../../../../client/dist";
    });
    
    // and
    
    app.UseSpa(spa => {
      spa.Options.SourcePath = "../../../../client";
    });
    

    但是当我跑步的时候: InvalidOperationException: Failed to start 'npm' .

    当我分别运行服务器和客户端时,它们会工作。。。所以问题在于如何配置“spa服务”。我两个都试过了 ../../../../client (从bin目录)和 ../client (从服务器项目的基本目录)。

    如何重新配置项目结构?(某处是否有有效的回购样本?)

    0 回复  |  直到 7 年前
        1
  •  0
  •   user4851087 user4851087    7 年前

    处于开发模式时,无法在dist文件夹中运行应用程序,因为dist文件夹仅用于生产模式

    默认设置如下

    services.AddSpaStaticFiles(configuration =>
    {
       configuration.RootPath = "ClientApp/dist";
    });
    
    app.UseSpa(spa =>
    {
       spa.Options.SourcePath = "ClientApp";
    
       if (env.IsDevelopment())
       {
          spa.UseAngularCliServer(npmScript: "start");
       }
    });
    

    所以为了运行你的应用程序,你必须在默认Startup.cs或client app文件的同一根目录下创建文件夹,就像在你的例子中是libs,那么它将是libs/client

    然后修改设置

    services.AddSpaStaticFiles(configuration =>
        {
           configuration.RootPath = "libs/client/dist";
        });
    
        app.UseSpa(spa =>
        {
           spa.Options.SourcePath = "libs/client";
    
           if (env.IsDevelopment())
           {
              spa.UseAngularCliServer(npmScript: "start");
           }
        });
    

    请注意,如果要运行另一个需要手动管理的角度应用程序,则只能使用此设置运行一个角度应用程序

        2
  •  0
  •   lonix    7 年前

    如我上面的问题所示,我改成了单回购结构

    2已编辑 Server.csproj (路径与服务器应用程序的目录相关):

    <!--<SpaRoot>ClientApp\</SpaRoot>-->
    <SpaRoot>../client/</SpaRoot>
    

    3已编辑 Startup.cs

    services.AddSpaStaticFiles(configuration => {
      //configuration.RootPath = "ClientApp/dist";
      configuration.RootPath = "./libs/client/dist";
    });
    

    和

    app.UseSpa(spa => {
      //spa.Options.SourcePath = "ClientApp";
      spa.Options.SourcePath = "./libs/client";
      // etc.
    });
    
    推荐文章