在Typescript指令上出错:"断点已设置但尚未绑定"在VS2017

时间:2018-06-02 20:05:21

标签: angular typescript visual-studio-2017 .net-core spa-template

我使用" dotnet new angular"创建了一个项目。在Typescript指令上设置断点时,它在运行时显示为一个打开的红色圆圈。错误消息是"断点当前不会被命中。断点已设置但尚未绑定。"

当我从.Net Core SDK 1.x更新到2.x时出现此问题这是2.x中的错误还是与我的设置有关?使用2.x的人是否在VS2017中使用Typescript断点?我在下面详细描述了我的设置以及失败的地方。

要复制问题,您可以在" this.currentCount ++;"上设置断点。在ClientApp \ src \ app \ counter \ counter.component.ts中,然后单击" Increment"在"柜台"页。

我目前正在使用最新的正式版本:

Visual Studio Pro 15.7.2
.Net Core SDK 2.1.300 (x64)
.Net Core Runtime 2.1.0 (x64)

我尝试了其他SDK 2.x版本。它在v2.1.4&中失败了v2.1.300。但断点在v2.0.0,2.1.200& 2.1.201。

不同之处在于,当它成功时,每个SDK都会生成文件" webpack.config.js" &安培; " webpack.config.vendor.js"在" dotnet new angular"期间在项目的根目录中。最新的2.x版本不会在根目录中生成这些文件。所以我不想使用以前的版本。

另一个区别是工作项目定义了" ClientApp"在webpack.config.js中。在那些失败的项目中,ClientApp位置在startup.cs中定义。

更多信息:

使用sdk v2.1.201(有效的),生成的package.json包含:

"typescript": "2.4.1",
"webpack": "2.5.1",
"webpack-hot-middleware": "2.18.2",
"webpack-merge": "4.1.0",

使用sdk v2.1.300(失败的),生成的package.json包含:

"typescript": "~2.5.3"

但不包含webpack的条目。在node_modules / .bin中有一个" webpack.cmd"其版本为3.11.0。

当我输入" tsc -v"在VS2017开发人员命令窗口中,我得到:

version 2.8.4

更新: 我向.Net SDK issues添加了一个问题 我被要求在那里打开一个Developer Feedback item for Visual Studio。他们认为这是TS / JS工具的VS问题。

如果您还遇到此问题,如果您添加到反馈页面,则可以帮助提高优先级。

更新(2018-03-23)已解决

这个问题可能早于今天解决,但直到今天我才再次调查。今天,我将VS2017更新为v15.9.9,将.Net Core SDK更新为2.2.105,将.Net核心主机更新为2.2.3。打字" tsc -v"在开发人员提示下显示"版本3.1.2"。

当我现在运行" dotnet new angular"并在" this.currentCount ++"上设置断点,断点被击中。

注意:在Chrome以外的其他浏览器中运行客户端应用时,可能仍会出现此问题。但是我总是使用Chrome,无论是在我之前遇到问题还是今天解决问题的时候。

3 个答案:

答案 0 :(得分:1)

有关链接线程的Microsoft更新:

  

Visual Studio中的Typescript断点不适用于ASP.NET Core   当前处于以下两种情况之一的项目:

     
      
  1. 如果您已将Visual Studio项目中的“ ClientApp”目录重命名/删除为其他名称,或者
  2.   
  3. 您的Typescript / JavaScript文件位于另一个目录(ClientApp除外)中。
  4.   
     

很遗憾,我们目前无法解决以下情况的断点   ClientApp文件夹之外的Typescript文件。我们正在与   Visual Studio中的相关团队进行了相同的修复,但是如果   您受到此更改的影响,建议您切换到   在“ ClientApp”文件夹中工作。

我的解决方法是我使用VSCode分别调试前端,这不是很理想,但似乎是使其与.net core和自定义项目结构一起工作的唯一方法

答案 1 :(得分:0)

2018年8月29日,布莱尔·王(Blair Wang)报告了解决此问题的方法:https://developercommunity.visualstudio.com/content/problem/268468/typescript-breakpoints-not-hit-in-visual-studio-15.html#reply-323159

    "This issue has been fixed and is now available in our latest update. You can download the update via the in-product notification or from here: https://visualstudio.microsoft.com/vs/"

直到今天(2018年3月23日),当我使用以下方法测试此修复程序时,我还没有看到这一点:

    Visual Studio v15.9.9
    .Net Core SDK 2.2.105
    .Net core Host 2.2.3
    Typescript 3.1.2

答案 2 :(得分:0)

对于使用.Net Core 3.1和Angular / TypeScript时遇到此问题的任何人,我的解决方案是在Startup.cs Configure方法中的app.Use()行之前添加app.UseSpaStaticFiles()。 / p>

// Declare middleware "use" statements before app.Use() in order to run/debug properly.
app.UseAuthentication();
app.UseHttpsRedirection();
app.UseSpaStaticFiles();
app.UseCookiePolicy();
app.UseStaticFiles();

// Necessary to force users to authenticate
app.Use(async (context, next) =>
{
  if (!context.User.Identity.IsAuthenticated)
  {
    await context.ChallengeAsync();
  }
  else
  {
    await next();
  }
});

最初,我在app.Use节下面有一条app.UseSpaStaticFiles()语句,并收到“设置了断点但尚未绑定”消息。这发生在Visual Studio 2019中。上移中间件语句后,断点开始工作。 (我认为这在我升级到.Net Core 3之前曾经起作用,但我不确定。)