IdentityModel 中断 "Could not load file or assembly 'System.Numerics.Vectors, Version=4.1.4.0"
IdentityModel breaks with "Could not load file or assembly 'System.Numerics.Vectors, Version=4.1.4.0"
我们有一个 .NET Framework 4.7.1 项目
我使用 NuGet 包管理器安装了 IdentityModel 6.0.0。它为我安装了以下依赖项:
Microsoft.Bcl.AsyncInterfaces 6.0.0
System.Buffers 4.5.1
System.Memory 4.5.4
System.Numerics.Vectors 4.5.0
System.Text.Json 6.0.3
System.ValueTuple 4.5.0
我正在尝试 运行 以下代码以查看服务是否存在:
var disco = await clientAuth.GetDiscoveryDocumentAsync(new DiscoveryDocumentRequest
{
Address = server,
Policy =
{
ValidateIssuerName = false
}
});
if (disco.IsError) {...}
但是,它一直在产生错误。我设法深入研究了代码,最后发现了这个:
var result = System.Text.Json.JsonDocument.Parse("{"issuer":"https:....}").RootElement;
我得到的错误是:
Could not load file or assembly 'System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
at System.Text.Json.JsonReaderHelper.IndexOfOrLessThan(Byte& searchSpace, Byte value0, Byte value1, Byte lessThan, Int32 length) in /_/src/libraries/System.Text.Json/src/System/Text/Json/Reader/JsonReaderHelper.cs:line 208
at System.Text.Json.Utf8JsonReader.ConsumeString() in /_/src/libraries/System.Text.Json/src/System/Text/Json/Reader/Utf8JsonReader.cs:line 1276
at System.Text.Json.Utf8JsonReader.ConsumePropertyName() in /_/src/libraries/System.Text.Json/src/System/Text/Json/Reader/Utf8JsonReader.cs:line 1227
at System.Text.Json.Utf8JsonReader.ReadSingleSegment() in /_/src/libraries/System.Text.Json/src/System/Text/Json/Reader/Utf8JsonReader.cs:line 852
at System.Text.Json.Utf8JsonReader.Read() in /_/src/libraries/System.Text.Json/src/System/Text/Json/Reader/Utf8JsonReader.cs:line 272
at System.Text.Json.JsonDocument.Parse(ReadOnlySpan`1 utf8JsonSpan, JsonReaderOptions readerOptions, MetadataDb& database, StackRowStack& stack) in /_/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.cs:line 1092
at System.Text.Json.JsonDocument.Parse(ReadOnlyMemory`1 utf8Json, JsonReaderOptions readerOptions, Byte[] extraRentedArrayPoolBytes, PooledByteBufferWriter extraPooledByteBufferWriter) in /_/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.Parse.cs:line 697
at System.Text.Json.JsonDocument.Parse(ReadOnlyMemory`1 json, JsonDocumentOptions options) in /_/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.Parse.cs:line 271
at System.Text.Json.JsonDocument.Parse(String json, JsonDocumentOptions options) in /_/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.Parse.cs:line 316
at Citadel.Framework.APICalls.APIBase.<Setup>d__3.MoveNext() in C:\Dev\Src\Tyrus\Production\Tyrus_5_1\Citadel.Framework.APICalls\APIBase.cs:line 86
我设法深入到 ConsumeString 方法,但什么也学不到。
最烦人的是我无法为 System.Numerics.Vectors
加载版本 4.1.4
在 Nuget 管理器中,只有以下版本可用:
4.5.0 - current
4.4.0
4.3.0
4.1.1
4.1.0
4.0.0
关于这个特定问题,我在互联网上获得的信息非常少,而且我已经尝试了所有我能找到的东西,但没有任何运气。我试过清除我的 nuget 缓存。我不记得我删除并重新添加了多少次依赖项,清理了我的解决方案并重建了它。我尝试了多种组合:
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.1.4.0" />
</dependentAssembly>
事实证明,在您的根项目文件中添加以下行将神奇地解决所有问题:
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
奇怪的是我没有找到任何建议这样做的文章。
我们有一个 .NET Framework 4.7.1 项目
我使用 NuGet 包管理器安装了 IdentityModel 6.0.0。它为我安装了以下依赖项:
Microsoft.Bcl.AsyncInterfaces 6.0.0
System.Buffers 4.5.1
System.Memory 4.5.4
System.Numerics.Vectors 4.5.0
System.Text.Json 6.0.3
System.ValueTuple 4.5.0
我正在尝试 运行 以下代码以查看服务是否存在:
var disco = await clientAuth.GetDiscoveryDocumentAsync(new DiscoveryDocumentRequest
{
Address = server,
Policy =
{
ValidateIssuerName = false
}
});
if (disco.IsError) {...}
但是,它一直在产生错误。我设法深入研究了代码,最后发现了这个: var result = System.Text.Json.JsonDocument.Parse("{"issuer":"https:....}").RootElement;
我得到的错误是:
Could not load file or assembly 'System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
at System.Text.Json.JsonReaderHelper.IndexOfOrLessThan(Byte& searchSpace, Byte value0, Byte value1, Byte lessThan, Int32 length) in /_/src/libraries/System.Text.Json/src/System/Text/Json/Reader/JsonReaderHelper.cs:line 208
at System.Text.Json.Utf8JsonReader.ConsumeString() in /_/src/libraries/System.Text.Json/src/System/Text/Json/Reader/Utf8JsonReader.cs:line 1276
at System.Text.Json.Utf8JsonReader.ConsumePropertyName() in /_/src/libraries/System.Text.Json/src/System/Text/Json/Reader/Utf8JsonReader.cs:line 1227
at System.Text.Json.Utf8JsonReader.ReadSingleSegment() in /_/src/libraries/System.Text.Json/src/System/Text/Json/Reader/Utf8JsonReader.cs:line 852
at System.Text.Json.Utf8JsonReader.Read() in /_/src/libraries/System.Text.Json/src/System/Text/Json/Reader/Utf8JsonReader.cs:line 272
at System.Text.Json.JsonDocument.Parse(ReadOnlySpan`1 utf8JsonSpan, JsonReaderOptions readerOptions, MetadataDb& database, StackRowStack& stack) in /_/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.cs:line 1092
at System.Text.Json.JsonDocument.Parse(ReadOnlyMemory`1 utf8Json, JsonReaderOptions readerOptions, Byte[] extraRentedArrayPoolBytes, PooledByteBufferWriter extraPooledByteBufferWriter) in /_/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.Parse.cs:line 697
at System.Text.Json.JsonDocument.Parse(ReadOnlyMemory`1 json, JsonDocumentOptions options) in /_/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.Parse.cs:line 271
at System.Text.Json.JsonDocument.Parse(String json, JsonDocumentOptions options) in /_/src/libraries/System.Text.Json/src/System/Text/Json/Document/JsonDocument.Parse.cs:line 316
at Citadel.Framework.APICalls.APIBase.<Setup>d__3.MoveNext() in C:\Dev\Src\Tyrus\Production\Tyrus_5_1\Citadel.Framework.APICalls\APIBase.cs:line 86
我设法深入到 ConsumeString 方法,但什么也学不到。
最烦人的是我无法为 System.Numerics.Vectors
加载版本 4.1.4在 Nuget 管理器中,只有以下版本可用:
4.5.0 - current
4.4.0
4.3.0
4.1.1
4.1.0
4.0.0
关于这个特定问题,我在互联网上获得的信息非常少,而且我已经尝试了所有我能找到的东西,但没有任何运气。我试过清除我的 nuget 缓存。我不记得我删除并重新添加了多少次依赖项,清理了我的解决方案并重建了它。我尝试了多种组合:
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.5.0.0" newVersion="4.1.4.0" />
</dependentAssembly>
事实证明,在您的根项目文件中添加以下行将神奇地解决所有问题:
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
奇怪的是我没有找到任何建议这样做的文章。