我目前正努力将现有的 .NET Framework 4.5.2 项目与新的 ASP.NET Core 项目集成。我使用 .NET Core SDK 1.1.1 构建
到目前为止,我拥有的是一个简单的 ASP 脚手架,它可以运行并能够加载我的旧项目 DLL,但我无法使用 VS Code 对其进行调试,因为生成的 PDB 似乎被忽略了。
这是 csproj(我删除了对旧项目的包引用,但问题仍然存在)
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net452</TargetFramework>
<RuntimeIdentifier>win7-x64</RuntimeIdentifier>
</PropertyGroup>
<ItemGroup>
<Folder Include="wwwroot\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="1.1.0" />
<PackageReference Include="Microsoft.AspNetCore.Diagnostics" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.2" />
<PackageReference Include="Microsoft.AspNetCore.Routing" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Server.IISIntegration" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Server.Kestrel" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="1.1.1" />
</ItemGroup>
<ItemGroup Condition=" '$(TargetFramework)' == 'net452' ">
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
</Project>
当我将 TargetFramework 更改为 netcoreapp1.1 时,会创建一个 DLL 而不是 EXE,并且可以进行调试。知道为什么吗?
这里是 dotnet --info 的输出
.NET Command Line Tools (1.0.1)
Product Information:
Version: 1.0.1
Commit SHA-1 hash: 005db40cd1
Runtime Environment:
OS Name: Windows
OS Version: 6.1.7601
OS Platform: Windows
RID: win7-x64
Base Path: C:\Program Files\dotnet\sdk\1.0.1
最佳答案
更新:C# 扩展 1.9.0 支持 .NET Framework 调试。参见 https://github.com/OmniSharp/omnisharp-vscode/releases/tag/v1.9.0
为此,将“类型”设置为 clr
并确保您的项目生成可移植 PDB。参见 https://github.com/OmniSharp/omnisharp-vscode/wiki/Portable-PDBs
工程项目
<PropertyGroup>
<DebugType>portable</DebugType>
</PropertyGroup>
启动.json
{
"version": "0.2.0",
"configurations": [
{
"name": ".NET Framework Launch (console)",
"type": "clr",
"request": "launch",
"program": "${workspaceRoot}/bin/Debug/net461/sample.exe",
"args": [],
"cwd": "${workspaceRoot}",
"stopAtEntry": false,
"console": "internalConsole"
}
]
}
原创
在 .NET Core 中,可执行项目会生成一个“.dll”文件。要启动它,您需要运行“dotnet.exe ./myapp.dll”。
在 .NET Framework 中,可执行项目会生成一个“.exe”文件。要启动它,您可以直接运行该文件:“myapp.exe”。
在撰写本文时(2017 年 3 月),VS Code 仅支持调试 .NET Core 进程。您可以在此处跟踪调试 .NET Framework 的功能请求:https://github.com/OmniSharp/omnisharp-vscode/issues/813 .同时,您将需要使用 Visual Studio 来调试 .NET Framework 进程。
关于c# - VS Code 不为使用 net452 Framework 为 .NET Core 编译的项目加载 PDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42832618/