发布WPF .Net Core 3应用程序和Serilog.Sinks.File

3
NuGet包Serilog.Sinks.File在发布时出现错误。
我正在尝试发布一个自包含的WPF .NET Core 3.0应用程序。该应用程序构建、运行和发布都很正常,直到添加了Serilog.Sinks.File。一旦将Serilog.Sinks.File添加到项目中,应用程序可以成功构建、运行和正确记录日志。但是,在尝试发布时会出现以下错误:
System.AggregateException: 发生一个或多个错误. ---> System.Exception: 发布失败。 --- 内部异常 堆栈跟踪 --- 在 System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions) 在 System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout,CancellationToken cancellationToken) 在 Microsoft.Publish.Framework.Model.DefaultPublishSteps.<>c__DisplayClass26_0.b__2() 在 System.Threading.Tasks.Task`1.InnerInvoke() 在 System.Threading.Tasks.Task.Execute() --- 上一个引发异常的位置的堆栈跟踪的结尾 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Microsoft.Publish.Framework.Model.DefaultPublishSteps.d__23.MoveNext() --- 上一个引发异常的位置的堆栈跟踪的结尾 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 在 Microsoft.Publish.Framework.ViewModel.ProfileSelectorViewModel.d__205.MoveNext() ---> (内部异常 #0) System.Exception: 发布失败。<---

移除Serilog.Sinks.File后,应用程序可以成功发布。
即使删除Serilog初始化命令,同样的错误也会发生。

1
你有检查AggregateException中的异常吗?看看它是否提供了任何线索? - C. Augusto Proiete
@CaioProiete 不是很清楚,但在VS中的输出只显示:Build: 11 succeeded, 0 failed, 0 up-to-date, 0 skipped,然后Publish: 0 succeeded, 1 failed, 0 skipped。输出中没有实际错误。会弹出一个消息框,指向一个包含上述错误信息的临时文件。 - Xaphann
1
哦,那很遗憾日志没有把 Agg 异常中的异常扁平化。 - C. Augusto Proiete
1
有点冒险: 你是通过 appSettings.json 还是 app.config 配置文件日志吗?如果是,可能在构建过程中无法检测到对文件汇流处的依赖关系... 值得快速测试一下...只需在应用程序启动时的某个位置放置这个代码 Console.WriteLine(typeof(Serilog.FileLoggerConfigurationExtensions)); ,以创建对文件汇流处程序集的静态依赖,并查看是否有帮助。 - C. Augusto Proiete
@CaioProiete 找到了解决方案,请见下文 - Xaphann
1个回答

2
我发现解决方案是使用Serilog.AspNetCore而不是Serilog.Sinks.File这个Nuget包。使用Serilog.AspNetCore后,应用程序就能够发布了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接