net471 System.Configuration.Install пространство имен не найдено - PullRequest
0 голосов
/ 21 мая 2018

Я разрабатываю приложение .NET Core, используя код Visual Studio и dotnet sdk на C #.У меня есть две целевые платформы в csproj:

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

, и я хочу скомпилировать консольное приложение, когда целью является netcoreapp2.0, и службой Windows, когда целью является net471.Чтобы добиться этого, я добавил символ препроцессора NET471 в код, связанный со службой.

Я обнаружил, что для создания службы Windows и возможности использования InstallUtil.exe необходимо создать класс, который наследуетиз ServiceBase и других, которые наследуются от Installer.Этот класс установщика находится в пространстве имен System.Configuration.Install.

Проблема заключается в том, что когда я хочу собрать для net471, например, так:

dotnet build -f net471

он завершился с ошибкой:

MyServiceInstaller.cs (4,28): ошибка CS0234: имя типа или пространства имен 'Install' не существует в пространстве имен 'System.Configuration' (у вас отсутствует ссылка на сборку?) [C:\ Users \ jjamardo \ service-test \ service-test.csproj] MyServiceInstaller.cs (9,39): ошибка CS0246: не удалось найти тип или имя пространства имен «Установщик» (отсутствует директива using или ссылка на сборку?) [C: \ Users \ jjamardo \ service-test \ service-test.csproj] 0 Предупреждение (я) 2 Ошибка (и)

Я много гуглю, но не могунайди что-нибудь полезное.

Попробовав множество вещей, мне удалось его скомпилировать, НО с использованием net461 в качестве целевой платформы.

dotnet build -f net461

Это может сработать, но я не хочу переходить на4.6.1.Я попытался создать .NET Framework 4.7.1 в Visual Studio 2017, и приложение работает нормально, поэтому я предполагаю, что пространство имен все еще существует.Я не понимаю, почему с помощью dotnet компилируется с целью 4.6.1, но не работает с 4.7.1.

Итак, вопрос: как я могу создать службу Windows, используя dotnet, с net471 в качестве целевой платформы.Есть ли другой способ сделать службу Windows без наследования от ServiceBase и Installer?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Для net471 вы добавили в свой проект?

<ItemGroup>
    <Reference Include="System.Configuration.Install" />
</ItemGroup>
0 голосов
/ 21 июня 2018

Хотя это не очень хороший ответ, пространство имен System.Configuration.Install не поддерживается в .NET Core.

...