我是整个C#.Net环境的新手,我正尝试将一个简单的Console .NetCore 3应用程序从MacOS 10.14部署到Windows Server 2012 R2。 问题是该应用程序确实可以在macOS上运行,但是在Windows上部署后却无法正常运行 在服务器上,这是代码
IServiceCollection services = new ServiceCollection();
services.AddLogging();
var serviceProvider = services.BuildServiceProvider();
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
Console.ReadKey();
我多次调试代码,并且只有在使用GetService方法时才会抛出异常 像这里一样
var loggerFactory = serviceProvider.GetService<ILoggerFactory>();
异常消息是
Microsoft.Extensions.DependecnyInjection.DependencyInjectionEventSource的类型初始值设定项引发了异常
我一直在寻找解决方案,但没有找到任何解决方案。
修改1:
有关此错误的更多详细信息,希望它可以对您有帮助
异常消息:
的类型初始值设定项 'Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource' 引发异常。
在Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.CreateServiceAccessor(Type serviceTyp e)在 System.Collections.Concurrent.ConcurrentDictionary
2.GetOrAdd(TKey key, Func
2 valueFactory)位于 Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType,ServiceP roviderEngineScope serviceProviderEngineScope)
在 Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType)在 Microsoft.Extensions.DependencyInjection.ServiceProvider.GetService(Type serviceType)在 Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetService [T](IServiceProvider 提供者)在Inj.Program.Main(String [] args)中 /Users/programmer/VSProjects/Inj/Inj/Program.cs:第19行
System.ArgumentException:外部组件引发了异常。 在System.Globalization.CompareInfo.CompareString(ReadOnlySpan
1 string1, ReadOnlySpan
1 string2,CompareOptions选项上) System.Globalization.CompareInfo.Compare(字符串string1,字符串 string2,CompareOptions选项) System.Globalization.TextInfo.PopulateIsAsciiCasingSameAsInvariant()
在System.Globalization.TextInfo.ChangeCaseCommon [TConversion](String 源)位于System.Globalization.TextInfo.ToUpper(String str),位于 System.String.ToUpperInvariant()位于 System.Diagnostics.Tracing.EventSource.GetGuid(Type eventSourceType)
在System.Diagnostics.Tracing.EventSource..ctor(EventSourceSettings 设置,String []特性)在 System.Diagnostics.Tracing.EventSource..ctor(EventSourceSettings 设置) Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource..ctor() 在 Microsoft.Extensions.DependencyInjection.DependencyInjectionEventSource..cctor()
答案 0 :(得分:0)
问题似乎与将应用程序作为dll运行有关,需要做的是将应用程序发布为目标平台的自包含可执行文件,因此,就我而言,我刚刚使用MacOs 10.14在Windows Server 2012 R2上发布了该文件以下命令(此命令不会直接发布到服务器,您需要将结果文件夹移动到服务器上的共享目录)
dotnet发布-c版本-r win10-x64
更好
dotnet发布-r win-x64 -c版本/ p:PublishSingleFile = true
移动文件夹后,我运行了.exe Windows可执行文件,现在它就像魅力