当项目具有 nlog 依赖性时,Blazor 客户端应用程序不会构建
Blazor client side app does not build when project has nlog dependency
我是 Blazor 的新手,我想使用一个依赖 NLog 4.6.2 的库。我没有尝试使用 NLog 进行登录,只是尝试使用该库。为了隔离问题,我在 .csproj 文件中添加了 NLog 4.6.2 作为依赖项
<PackageReference Include="NLog" Version="4.6.2" />
当我构建应用程序时出现以下错误:
Severity Code Description Project File Line Suppression State
Error MSB3073 The command "dotnet "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.blazor.mono[=11=].10.0-preview6.19303.4\build\netstandard1.0\../../tools/illink/illink.dll" -l none --disable-opt unreachablebodies --verbose --strip-security true --exclude-feature com --exclude-feature sre -v false -c link -u link -b true -d "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.blazor.mono[=11=].10.0-preview6.19303.4\build\netstandard1.0\../../tools/mono/bcl/" -d "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.blazor.mono[=11=].10.0-preview6.19303.4\build\netstandard1.0\../../tools/mono/bcl/Facades/" -o "C:\Users\sgerene\Documents-Source-Code\CDP4\CDP4-Blazor\CDP4WebApp\obj\Debug\netstandard2.0\blazor\linker/" -x "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.blazor.build.0.0-preview6.19307.2\targets\BuiltInBclLinkerDescriptor.xml" -x "C:\Users\sgerene\Documents-Source-Code\CDP4\CDP4-Blazor\CDP4WebApp\obj\Debug\netstandard2.0\blazor\linker.descriptor.xml" -a "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.authorization.0.0-preview6.19307.2\lib\netstandard2.0\Microsoft.AspNetCore.Authorization.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.blazor.0.0-preview6.19307.2\lib\netstandard2.0\Microsoft.AspNetCore.Blazor.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.components.0.0-preview6.19307.2\lib\netstandard2.0\Microsoft.AspNetCore.Components.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.components.browser.0.0-preview6.19307.2\lib\netstandard2.0\Microsoft.AspNetCore.Components.Browser.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.hosting.abstractions.1.1\lib\netstandard2.0\Microsoft.AspNetCore.Hosting.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.hosting.server.abstractions.1.1\lib\netstandard2.0\Microsoft.AspNetCore.Hosting.Server.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.http.1.1\lib\netstandard2.0\Microsoft.AspNetCore.Http.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.http.abstractions.1.1\lib\netstandard2.0\Microsoft.AspNetCore.Http.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.http.features.1.1\lib\netstandard2.0\Microsoft.AspNetCore.Http.Features.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.metadata.0.0-preview6.19307.2\lib\netstandard2.0\Microsoft.AspNetCore.Metadata.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.routing.abstractions.1.1\lib\netstandard2.0\Microsoft.AspNetCore.Routing.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.webutilities.1.1\lib\netstandard2.0\Microsoft.AspNetCore.WebUtilities.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.configuration.1.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.configuration.abstractions.1.1\lib\netstandard2.0\Microsoft.Extensions.Configuration.Abstractions.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.configuration.binder.1.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.Binder.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.dependencyinjection.0.0-preview6.19304.6\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.dependencyinjection.abstractions.0.0-preview6.19304.6\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.fileproviders.abstractions.1.1\lib\netstandard2.0\Microsoft.Extensions.FileProviders.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.hosting.abstractions.1.1\lib\netstandard2.0\Microsoft.Extensions.Hosting.Abstractions.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.logging.1.0\lib\netstandard2.0\Microsoft.Extensions.Logging.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.logging.abstractions.0.0-preview6.19304.6\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.objectpool.1.1\lib\netstandard2.0\Microsoft.Extensions.ObjectPool.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.options.0.0-preview6.19304.6\lib\netstandard2.0\Microsoft.Extensions.Options.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.primitives.0.0-preview6.19304.6\lib\netstandard2.0\Microsoft.Extensions.Primitives.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.jsinterop.0.0-preview6.19304.6\lib\netstandard2.0\Microsoft.JSInterop.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.net.http.headers.1.1\lib\netstandard2.0\Microsoft.Net.Http.Headers.dll" -a "C:\Users\sgerene\.nuget\packages\mono.webassembly.interop.0.0-preview6.19304.6\lib\netstandard2.0\Mono.WebAssembly.Interop.dll" -a "C:\Users\sgerene\.nuget\packages\nlog.6.4\lib\netstandard2.0\NLog.dll" -a "C:\Users\sgerene\.nuget\packages\nlog.extensions.logging.5.1\lib\netstandard2.0\NLog.Extensions.Logging.dll" -a "C:\Users\sgerene\.nuget\packages\nlog.web.aspnetcore.8.4\lib\netstandard2.0\NLog.Web.AspNetCore.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.buffers.5.0\lib\netstandard2.0\System.Buffers.dll" -a "C:\Users\sgerene\.nuget\packages\system.componentmodel.annotations.6.0-preview6.19303.8\lib\netstandard2.0\System.ComponentModel.Annotations.dll" -a "C:\Users\sgerene\.nuget\packages\system.memory.5.3\lib\netstandard2.0\System.Memory.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.numerics.vectors.5.0\lib\netstandard2.0\System.Numerics.Vectors.dll" -a "C:\Users\sgerene\.nuget\packages\system.runtime.compilerservices.unsafe.6.0-preview6.19303.8\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.text.encodings.web.5.0\lib\netstandard2.0\System.Text.Encodings.Web.dll" -a "C:\Users\sgerene\.nuget\packages\system.text.json.6.0-preview6.19303.8\lib\netstandard2.0\System.Text.Json.dll" -a "C:\Users\sgerene\.nuget\packages\system.threading.tasks.extensions.5.2\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll" -a "C:\Users\sgerene\Documents-Source-Code\CDP4\CDP4-Blazor\CDP4WebApp\obj\Debug\netstandard2.0\CDP4WebApp.dll"" exited with code -532462766. CDP4WebApp C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.blazor.build.0.0-preview6.19307.2\targets\Blazor.MonoRuntime.targets 439
有人能给我指出正确的方向来帮助我完成这项工作吗?我想要实现的是 NLog 依赖项允许我构建和 运行 应用程序...暂时不尝试登录。
如果您检查输出,您会发现这失败了,因为 NLog 依赖于 System.Threading.Thread.CurrentPrincipal
。
Blazor/Mono 不支持线程(所以无论如何它都会抛出 NotImplemented)但是 Mono.Wasm 也被严重修剪,所以你现在得到这个链接器错误。
I want to make use of a library that has NLog 4.6.2 as a dependency.
真不幸。这里的明智教训是图书馆不应该有如此强的依赖性。但这对你没有帮助。
我能看到的唯一现实的解决方案是使用 Blazor server-side。或者更改或替换该库。
当您要更改库时,让它们依赖于日志记录接口。这在 .NET Core (MS.Logging.Extensions) 中有明确定义,但对于 4.x,您必须查看 NLog 支持的内容,如果需要,请自己动手。
更新:
Blazor 对代码进行了如此多的修整,从而破坏了 .net 标准 2。
从 preview7 开始,CurrentPrincipal
存在,但在使用时抛出 PlatformNotSupportedException
。
我是 Blazor 的新手,我想使用一个依赖 NLog 4.6.2 的库。我没有尝试使用 NLog 进行登录,只是尝试使用该库。为了隔离问题,我在 .csproj 文件中添加了 NLog 4.6.2 作为依赖项
<PackageReference Include="NLog" Version="4.6.2" />
当我构建应用程序时出现以下错误:
Severity Code Description Project File Line Suppression State
Error MSB3073 The command "dotnet "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.blazor.mono[=11=].10.0-preview6.19303.4\build\netstandard1.0\../../tools/illink/illink.dll" -l none --disable-opt unreachablebodies --verbose --strip-security true --exclude-feature com --exclude-feature sre -v false -c link -u link -b true -d "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.blazor.mono[=11=].10.0-preview6.19303.4\build\netstandard1.0\../../tools/mono/bcl/" -d "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.blazor.mono[=11=].10.0-preview6.19303.4\build\netstandard1.0\../../tools/mono/bcl/Facades/" -o "C:\Users\sgerene\Documents-Source-Code\CDP4\CDP4-Blazor\CDP4WebApp\obj\Debug\netstandard2.0\blazor\linker/" -x "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.blazor.build.0.0-preview6.19307.2\targets\BuiltInBclLinkerDescriptor.xml" -x "C:\Users\sgerene\Documents-Source-Code\CDP4\CDP4-Blazor\CDP4WebApp\obj\Debug\netstandard2.0\blazor\linker.descriptor.xml" -a "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.authorization.0.0-preview6.19307.2\lib\netstandard2.0\Microsoft.AspNetCore.Authorization.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.blazor.0.0-preview6.19307.2\lib\netstandard2.0\Microsoft.AspNetCore.Blazor.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.components.0.0-preview6.19307.2\lib\netstandard2.0\Microsoft.AspNetCore.Components.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.components.browser.0.0-preview6.19307.2\lib\netstandard2.0\Microsoft.AspNetCore.Components.Browser.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.hosting.abstractions.1.1\lib\netstandard2.0\Microsoft.AspNetCore.Hosting.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.hosting.server.abstractions.1.1\lib\netstandard2.0\Microsoft.AspNetCore.Hosting.Server.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.http.1.1\lib\netstandard2.0\Microsoft.AspNetCore.Http.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.http.abstractions.1.1\lib\netstandard2.0\Microsoft.AspNetCore.Http.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.http.features.1.1\lib\netstandard2.0\Microsoft.AspNetCore.Http.Features.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.metadata.0.0-preview6.19307.2\lib\netstandard2.0\Microsoft.AspNetCore.Metadata.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.routing.abstractions.1.1\lib\netstandard2.0\Microsoft.AspNetCore.Routing.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.aspnetcore.webutilities.1.1\lib\netstandard2.0\Microsoft.AspNetCore.WebUtilities.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.configuration.1.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.configuration.abstractions.1.1\lib\netstandard2.0\Microsoft.Extensions.Configuration.Abstractions.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.configuration.binder.1.0\lib\netstandard2.0\Microsoft.Extensions.Configuration.Binder.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.dependencyinjection.0.0-preview6.19304.6\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.dependencyinjection.abstractions.0.0-preview6.19304.6\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.fileproviders.abstractions.1.1\lib\netstandard2.0\Microsoft.Extensions.FileProviders.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.hosting.abstractions.1.1\lib\netstandard2.0\Microsoft.Extensions.Hosting.Abstractions.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.logging.1.0\lib\netstandard2.0\Microsoft.Extensions.Logging.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.logging.abstractions.0.0-preview6.19304.6\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.extensions.objectpool.1.1\lib\netstandard2.0\Microsoft.Extensions.ObjectPool.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.options.0.0-preview6.19304.6\lib\netstandard2.0\Microsoft.Extensions.Options.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.extensions.primitives.0.0-preview6.19304.6\lib\netstandard2.0\Microsoft.Extensions.Primitives.dll" -a "C:\Users\sgerene\.nuget\packages\microsoft.jsinterop.0.0-preview6.19304.6\lib\netstandard2.0\Microsoft.JSInterop.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\microsoft.net.http.headers.1.1\lib\netstandard2.0\Microsoft.Net.Http.Headers.dll" -a "C:\Users\sgerene\.nuget\packages\mono.webassembly.interop.0.0-preview6.19304.6\lib\netstandard2.0\Mono.WebAssembly.Interop.dll" -a "C:\Users\sgerene\.nuget\packages\nlog.6.4\lib\netstandard2.0\NLog.dll" -a "C:\Users\sgerene\.nuget\packages\nlog.extensions.logging.5.1\lib\netstandard2.0\NLog.Extensions.Logging.dll" -a "C:\Users\sgerene\.nuget\packages\nlog.web.aspnetcore.8.4\lib\netstandard2.0\NLog.Web.AspNetCore.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.buffers.5.0\lib\netstandard2.0\System.Buffers.dll" -a "C:\Users\sgerene\.nuget\packages\system.componentmodel.annotations.6.0-preview6.19303.8\lib\netstandard2.0\System.ComponentModel.Annotations.dll" -a "C:\Users\sgerene\.nuget\packages\system.memory.5.3\lib\netstandard2.0\System.Memory.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.numerics.vectors.5.0\lib\netstandard2.0\System.Numerics.Vectors.dll" -a "C:\Users\sgerene\.nuget\packages\system.runtime.compilerservices.unsafe.6.0-preview6.19303.8\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll" -a "C:\Program Files\dotnet\sdk\NuGetFallbackFolder\system.text.encodings.web.5.0\lib\netstandard2.0\System.Text.Encodings.Web.dll" -a "C:\Users\sgerene\.nuget\packages\system.text.json.6.0-preview6.19303.8\lib\netstandard2.0\System.Text.Json.dll" -a "C:\Users\sgerene\.nuget\packages\system.threading.tasks.extensions.5.2\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll" -a "C:\Users\sgerene\Documents-Source-Code\CDP4\CDP4-Blazor\CDP4WebApp\obj\Debug\netstandard2.0\CDP4WebApp.dll"" exited with code -532462766. CDP4WebApp C:\Users\sgerene\.nuget\packages\microsoft.aspnetcore.blazor.build.0.0-preview6.19307.2\targets\Blazor.MonoRuntime.targets 439
有人能给我指出正确的方向来帮助我完成这项工作吗?我想要实现的是 NLog 依赖项允许我构建和 运行 应用程序...暂时不尝试登录。
如果您检查输出,您会发现这失败了,因为 NLog 依赖于 System.Threading.Thread.CurrentPrincipal
。
Blazor/Mono 不支持线程(所以无论如何它都会抛出 NotImplemented)但是 Mono.Wasm 也被严重修剪,所以你现在得到这个链接器错误。
I want to make use of a library that has NLog 4.6.2 as a dependency.
真不幸。这里的明智教训是图书馆不应该有如此强的依赖性。但这对你没有帮助。
我能看到的唯一现实的解决方案是使用 Blazor server-side。或者更改或替换该库。
当您要更改库时,让它们依赖于日志记录接口。这在 .NET Core (MS.Logging.Extensions) 中有明确定义,但对于 4.x,您必须查看 NLog 支持的内容,如果需要,请自己动手。
更新:
Blazor 对代码进行了如此多的修整,从而破坏了 .net 标准 2。
从 preview7 开始,CurrentPrincipal
存在,但在使用时抛出 PlatformNotSupportedException
。