无法找到net471 System.Configuration.Install命名空间

时间:2018-05-21 13:03:13

标签: c# .net-core windows-services .net-4.7.1

我正在使用Visual Studio Code和C#上的dotnet sdk开发.NET Core应用程序。我在csproj中有两个目标框架:

<TargetFrameworks>netcoreapp2.0;net471</TargetFrameworks>

我希望在目标是netcoreapp2.0时编译控制台应用程序,在目标是net471时编译Windows服务。为此,我在与服务相关的代码中添加了预处理器符号NET471。

我发现要创建Windows服务并能够使用InstallUtil.exe,必须创建一个继承自ServiceBase的类,以及从Installer继承的其他类。此Installer类位于System.Configuration.Install命名空间中。

问题在于,当我想像这样构建net471时:

dotnet build -f net471

它因此错误而失败:

  

MyServiceInstaller.cs(4,28):error CS0234:类型或命名空间名称   名称空间'System.Configuration'中不存在'Install'(是   你错过了一个程序集引用?)   [C:\用户\ jjamardo \服务测试\服务test.csproj]   MyServiceInstaller.cs(9,39):错误CS0246:类型或命名空间名称   找不到'安装程序'(你是否错过了使用指令或   装配参考?)   [C:\ Users \ jjamardo \ service-test \ service-test.csproj] 0警告2   误差(S)

我谷歌很多,但我找不到任何有用的东西。

尝试了很多我设法编译的东西,但是使用net461作为目标框架。

dotnet build -f net461

这可能有用,但我不想降级到4.6.1。我尝试在Visual Studio 2017中创建.NET Framework 4.7.1并且应用程序正常工作,因此我假设命名空间仍然存在。我不明白为什么使用dotnet编译目标4.6.1但是使用4.7.1失败。

所以,问题是:我如何使用dotnet制作Windows服务,net471作为目标框架。有没有其他方法可以在不从ServiceBase和Installer继承的情况下制作Windows服务?

谢谢!

3 个答案:

答案 0 :(得分:0)

虽然不是一个好的答案,但.NET Core不支持System.Configuration.Install名称空间。

答案 1 :(得分:0)

对于net471,您是否将其添加到项目中?

<ItemGroup>
    <Reference Include="System.Configuration.Install" />
</ItemGroup>

答案 2 :(得分:0)

有一个实现System.Configuration.Install API 1:1的NuGet程序包:Link to the package