我正在使用Visual Studio 2017.我使用两个Target框架netstandard2.0和net46创建了一个.NET标准库(让这个库成为Lib1)项目.然后我有另外两个项目......一个是"纯粹的" .NET Framework 4.6控制台项目(我们称之为Console46)和一个.NET Core控制台项目(我们称之为ConsoleCore).他们都引用了Lib1.
当我运行ConsoleCore项目时,我可以调试并放置断点而没有任何问题,但是当我运行Console46时,Visual Studio无法加载pdb文件,因此我无法调试库,放置断点等.
我尝试手动加载PDB文件,因为它是为net46创建的,但它也失败了.
我该怎么做才能解决这个问题?
谢谢!
我正在使用 Visual Studio Code 和 C# 上的 dotnet sdk 开发 .NET Core 应用程序。我在 csproj 中有两个目标框架:
<TargetFrameworks>netcoreapp2.0;net471</TargetFrameworks>
Run Code Online (Sandbox Code Playgroud)
我想在目标是 netcoreapp2.0 时编译控制台应用程序,在目标是 net471 时编译 Windows 服务。为了实现这一点,我在与服务关联的代码中添加了预处理器符号 NET471。
我发现要创建一个Windows服务并能够使用InstallUtil.exe,需要创建一个继承自ServiceBase的类,以及其他继承自Installer的类。此 Installer 类位于 System.Configuration.Install 命名空间中。
问题是当我想像这样构建 net471 时:
dotnet build -f net471
Run Code Online (Sandbox Code Playgroud)
它因以下错误而失败:
MyServiceInstaller.cs(4,28):错误 CS0234:命名空间“System.Configuration”中不存在类型或命名空间名称“Install”(您是否缺少程序集引用?)[C:\Users\jjamardo\service- test\service-test.csproj] MyServiceInstaller.cs(9,39): 错误 CS0246: 找不到类型或命名空间名称“Installer”(您是否缺少 using 指令或程序集引用?)[C:\Users \jjamardo\service-test\service-test.csproj] 0 警告 2 错误
我用谷歌搜索了很多,但找不到任何有用的东西。
尝试了很多东西,我设法编译它,但使用 net461 作为目标框架。
dotnet build -f net461
Run Code Online (Sandbox Code Playgroud)
这可能有效,但我不想降级到 4.6.1。我尝试在 Visual Studio 2017 中制作 .NET Framework 4.7.1 并且应用程序运行良好,因此我假设命名空间仍然存在。我不明白为什么使用 dotnet 可以使用目标 4.6.1 进行编译,但使用 4.7.1 时会失败。
所以,问题是:如何使用 dotnet 制作 Windows 服务,以 …