【发布时间】:2016-03-29 01:01:58
【问题描述】:
我有一个奇怪的问题,我已经做了两天了。
我们为内部 nuget 包设置了 TeamCity/ProGet。它到了我们需要调试 nuget 包的地步,所以我继续启用源服务器支持。一切都很好,很容易,我继续前进。
当天晚些时候,我尝试进入 nuget 包中的可等待方法,它直接跳过了它(没有错误或打印输出说明找不到源)。
在我的故障排除过程中,我为我尝试进入的方法创建了一个同步包装器,重新发布了 nuget 包并尝试进入它,但没有问题。
为了排除更复杂的库,我使用两种方法创建了一个新的 nuget 包:
public async Task<bool> MyTestAsync()
{
return await Task.FromResult(true);
}
public bool MyTest()
{
return MyTestAsync().Result;
}
我每次都可以毫无问题地进入同步方法,但 VS 2015 每次都会跳过异步方法。
为了排除我的盒子,我去了一个新的图像并复制了产生相同结果的测试。
我在谷歌搜索中找不到的源/符号服务器调试是否存在限制?有其他人让这个工作吗?
【问题讨论】:
-
只要您有 nuget、符号和源服务器设置,这很容易重现。如果我让代码运行一次并使用 Intellitrace 将其返回,并且在历史调试时在我要调试的代码中设置一个断点,我可以获得一个断点来工作。在下一次执行时,它将在方法内部停止,而不是越过它。我希望有人能有所了解,因为并非所有开发人员都有 2015 Enterprise,所以这种解决方法不起作用。
-
进一步更新… IDE 并在异步方法中设置一个断点,IDE 不会进入并再次执行代码,它将在那里中断,允许根据需要进行调试。现在,“缺陷”看起来像是 Visual Studio 的一个,它不允许源服务器检索(通过 Fiddler 确认)以步入异步方法或在源已经存在的情况下移入该方法。它似乎只有在设置了手动中断时才有效。
-
我认为这个问题与符号服务器/源服务器无关,而是MSBuild 14在Release模式下编译时生成的PDB的问题。我已经提交了一个问题here。
标签: c# visual-studio debugging asynchronous nuget