Description
I've been working on a Windows Service for the better part of a week...
When I finally tried pushing the changes to our testing environment, it crashed saying it was the incorrect platform.
Reproduction Steps
Using Visual Studio for Mac
Create a new project using the "Worker Service" template.
Install Nuget Package: Microsoft.Extensions.Hosting.WindowsServices
Run publish command:
dotnet publish "/Users/pvt/Github/pvt/pvt/pvt.csproj" --configuration "Release" --output "../new-win-service" -r win-x64
Copy to a computer with Windows Server 2019 Standard installed
Install Windows Service (sc create "service name" binPath="directory")
Start Windows Service.
Service takes a second to attempt to start, does not start, and an error PlatformNotSupportedException can be found in the Event Viewer
Expected behavior
Windows Service Starts Up and runs to completion.
Actual behavior
Windows Service crashes on startup and an error can be found in the Event Viewer
Regression?
No response
Known Workarounds
No response
Configuration
dotnet runtime v5.0.11
dotnet sdk v5.0.402
Microsoft.Extensions.Hosting v5.0.0
Microsoft.Extensions.Hosting.WindowsServices v5.0.1
Development Machine: macOS Big Sur v11.6 - x64 (Intel Chip)
Testing Machine: Windows Server 2019 Standard - x64
Other information
Full Exception in Event Viewer
System.PlatformNotSupportedException: ServiceController enables manipulating and accessing Windows services and it is not applicable for other operating systems.
at System.ServiceProcess.ServiceBase..ctor()
at Microsoft.Extensions.Hosting.WindowsServices.WindowsServiceLifetime..ctor(IHostEnvironment environment, IHostApplicationLifetime applicationLifetime, ILoggerFactory loggerFactory, IOptions`1 optionsAccessor, IOptions`1 windowsServiceOptionsAccessor)
at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitConstructor(ConstructorCallSite constructorCallSite, RuntimeResolverContext context)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitCache(ServiceCallSite callSite, RuntimeResolverContext context, ServiceProviderEngineScope serviceProviderEngine, RuntimeResolverLock lockType)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitRootCache(ServiceCallSite singletonCallSite, RuntimeResolverContext context)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass1_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider)
at Microsoft.Extensions.Hosting.HostBuilder.Build()
at pvt.Program.Main(String[] args) in /Users/pvt/Github/pvt/pvt/Program.cs:line 17
Description
I've been working on a Windows Service for the better part of a week...
When I finally tried pushing the changes to our testing environment, it crashed saying it was the incorrect platform.
Reproduction Steps
Using Visual Studio for Mac
Create a new project using the "Worker Service" template.
Install Nuget Package:
Microsoft.Extensions.Hosting.WindowsServicesRun publish command:
dotnet publish "/Users/pvt/Github/pvt/pvt/pvt.csproj" --configuration "Release" --output "../new-win-service" -r win-x64Copy to a computer with Windows Server 2019 Standard installed
Install Windows Service (
sc create "service name" binPath="directory")Start Windows Service.
Service takes a second to attempt to start, does not start, and an error
PlatformNotSupportedExceptioncan be found in the Event ViewerExpected behavior
Windows Service Starts Up and runs to completion.
Actual behavior
Windows Service crashes on startup and an error can be found in the Event Viewer
Regression?
No response
Known Workarounds
No response
Configuration
dotnet runtime v5.0.11
dotnet sdk v5.0.402
Microsoft.Extensions.Hosting v5.0.0
Microsoft.Extensions.Hosting.WindowsServices v5.0.1
Development Machine: macOS Big Sur v11.6 - x64 (Intel Chip)
Testing Machine: Windows Server 2019 Standard - x64
Other information
Full Exception in Event Viewer