无法在 ClientApp 子文件夹中的 angular 8.0 应用程序的 asp.net 核心项目中的任何断点处停止

Posted

技术标签:

【中文标题】无法在 ClientApp 子文件夹中的 angular 8.0 应用程序的 asp.net 核心项目中的任何断点处停止【英文标题】:Unable to stop at any breakpoint in a asp.net core project with angular 8.0 app in subfolder inside ClientApp 【发布时间】:2019-12-03 19:11:34 【问题描述】:

文件夹结构为: https://i.stack.imgur.com/SIMcy.png

我要设置断点的应用在clientapp\apps\microsympan\app\src\app\app.component.ts中

如果我使用 Visual Studio 代码运行并将启动,json 设置为: "webRoot": "$workspaceFolder/apps/microsympan/app" 我可以设置断点并命中

在我设置的视觉工作室中 1) 在 Startup.cs 中

app.UseSpa(spa => 
        spa.Options.SourcePath = "ClientApp/apps/microsympan/app";
        if (env.IsDevelopment())  spa.UseAngularCliServer(npmScript: "start microsympan") 
      );

2) 在 csproj 中 clientapp\apps\microsympan\app

但没有运气。除非我在 Chrome 中设置断点然后被命中并在 Visual Studio 中显示文件副本,但我无法在 Visual Studio 中设置断点并被命中。

这是配置变量的错误/运气还是有解决方案?

提前致谢

【问题讨论】:

我如何告诉 Visual Studio Angular 项目文件夹在 ClientApp 内部但更深 3 个文件夹 (ClientApp/apps/microsympan/app) ?请看结构here 【参考方案1】:

您必须为您的 Visual Studio 进行设置才能调试 TS 代码。默认情况下,Visual Studio 不会为您启用

你可以看看here和here。

小步走上去

使用 tsconfig.json 文件配置源映射 如果将 tsconfig.json 文件添加到项目中,Visual Studio 会将目录根视为 TypeScript 项目。要添加文件,请在解决方案资源管理器中右键单击您的项目,然后选择添加 > 新项目 > Web > 脚本 > TypeScript JSON 配置文件。如下所示的 tsconfig.json 文件将添加到您的项目中。


  "compilerOptions": 
    "noImplicitAny": false,
    "noEmitOnError": true,
    "removeComments": false,
    "sourceMap": true,
    "target": "es5"
  ,
  "exclude": [
    "node_modules",
    "wwwroot"
  ]

tsconfig.json 的编译器选项

inlineSourceMap:使用源映射而不是发出单个文件 为每个源文件创建一个单独的源映射。 inlineSources:在单个文件中与源映射一起发出源;需要设置 inlineSourceMap 或 sourceMap。 mapRoot:指定调试器应查找源映射 (.map) 文件的位置,而不是默认位置。如果运行时 .map 文件需要位于与 .js 文件不同的位置,请使用此标志。指定的位置嵌入在源映射中,以将调试器定向到 .map 文件的位置。 sourceMap:生成对应的.map文件。 sourceRoot:指定调试器应该找到 TypeScript 文件的位置,而不是源位置。如果运行时源需要位于与设计时位置不同的位置,请使用此标志。指定的位置嵌入在源映射中,以将调试器定向到源文件所在的位置。

使用项目设置配置源映射 您还可以使用项目属性配置源映射设置,方法是右键单击项目,然后选择

Project > Properties > TypeScript Build > Debugging.

这些项目设置可用。

生成源地图(相当于tsconfig.json中的sourceMap):生成对应的.map文件。 指定源地图的根目录(相当于 tsconfig.json 中的 mapRoot):指定调试器应该找到地图文件的位置,而不是生成的位置。如果运行时 .map 文件需要位于与 .js 文件不同的位置,请使用此标志。指定的位置嵌入在源映射中,以将调试器定向到映射文件所在的位置。 指定 TypeScript 文件的根目录(相当于 tsconfig.json 中的 sourceRoot):指定调试器应该找到 TypeScript 文件的位置,而不是源位置。如果运行时源文件需要位于与设计时位置不同的位置,请使用此标志。指定的位置嵌入在源映射中,以将调试器定向到源文件所在的位置。

【讨论】:

感谢您的回答,但我没有您描述的问题。我有一个可以正确调试的正在运行的项目。随着项目变得越来越大,我决定使用 nx.dev 的 monorepo 方法,所有项目都在同一个根文件夹和存储库中,但现在我无法调试,因为文件夹结构发生了变化。我尝试了任何方法,但我无法弄清楚 VisualStudio 想要的配置。 可以使用visual studio code或者angular ide来调试。在进行客户端调试时,我不是 Visual Studio 的忠实粉丝:D

以上是关于无法在 ClientApp 子文件夹中的 angular 8.0 应用程序的 asp.net 核心项目中的任何断点处停止的主要内容,如果未能解决你的问题,请参考以下文章

以不同的名称发布 ClientApp\dist

android一步一步实现视频clientapp

自写的开发框架,胜于官方的clientAPP的实战开发。(已开源)

IIS 子文件夹中的 Angular PWA 无法脱机工作

Phonegap/Cordova 无法下载到 Android 中的子文件夹

Spark-Luanch Driver