У меня есть два проекта:
- Инструменты данных SQL Server
.sqlproj
определение некоторых хранимых процедур T-SQL, развертываемых в локально установленной версии SQL Server 2017 Developer Edition.
- MSTest
.csproj
вызов этих хранимых процедур через ADO.NET.
В Visual Studio 2017 Professional с тестовым проектом в старом стиле я смог:
- включить «Включить отладку SQL Server» в свойствах тестового проекта,
- отладка метода, отмеченного
[TestMethod]
(щелкнув правой кнопкой мыши в Test Explorer),
- и когда я достигну
SqlCommand.ExecuteNonQuery()
, войдите в хранимую процедуру T-SQL и достигните точки останова в T-SQL.
С тех пор я перенес тестовый проект в новый формат SDK-стиля .csproj
и в Visual Studio 2019 Professional, и больше не вижу «Отладка SQL Server» вариант больше. Любые точки останова, которые я пытаюсь установить в T-SQL, помечаются как:
"В настоящий момент точка останова не будет достигнута. Для этого документа не было загружено никаких символов."
Ключом для меня является возможность отладки через границу между C # и T-SQL, потому что C # подготавливает все входные данные для T-SQL. Я знаю, что могу просто написать сценарий T-SQL, который подготавливает ввод и отлаживает , что , но это дублирует работу, уже выполненную в C #, и в некоторых случаях будет затруднено (например, тестирование параллелизма).
Итак, есть ли способ (в этой среде) отладить код C # и перейти на T-SQL?
Вот мой новый тестовый проект:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net47</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.0.1" />
<PackageReference Include="MSTest.TestAdapter" Version="1.4.0" />
<PackageReference Include="MSTest.TestFramework" Version="1.4.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..." />
...
</ItemGroup>
<ItemGroup>
<Reference Include="..." />
...
</ItemGroup>
</Project>