Я пытаюсь использовать класс System.Security.Cryptography.RNGCryptoServiceProvider в моей библиотеке .NET Standard 1.4 и в соответствии с в этой теме мой код выглядит так:
private byte[] GenerateRandomNumber(int length)
{
using (var randomNumberGenerator = RandomNumberGenerator.Create())
{
var number = new byte[length];
randomNumberGenerator.GetBytes(number);
return number;
}
}
Я также установил из библиотек NuGet:
- Система.Безопасность.Криптография.Алгоритмы v=4.3.0
- Система.Безопасность.Криптография.Примитивы v=4.3.0
Но попытка запустить его дает мне:
'Could not load file or package' System.Security.Cryptography.Algorithms, Version = 4.1.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'or one of its dependencies. The specified file could not be found. '
А на странице NuGet нет версии 4.1.0.0, только 4.1.0-rc2-24027 и после установки этой версии я получаю точно такое же исключение.
Что не так?
Изменить: переход с .NET Standard 1.4 на 1.6 не помог
Редактировать2:
Когда я нажимаю F12 на RandomNumberGenerator
:
#region Assembly System.Security.Cryptography.Algorithms, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// C:\Users\x.y\.nuget\packages\system.security.cryptography.algorithms\4.3.0\ref\netstandard1.4\System.Security.Cryptography.Algorithms.dll
#endregion
namespace System.Security.Cryptography
{
public abstract class RandomNumberGenerator : IDisposable
{
protected RandomNumberGenerator();
public static RandomNumberGenerator Create();
public void Dispose();
public abstract void GetBytes(byte[] data);
protected virtual void Dispose(bool disposing);
}
}
Поэтому ему нужна версия 4.1.0 (которой нет в NuGet), но путь установлен для 4.3.0.
System.IO (>= 4.3.0)
,System.Runtime (>= 4.3.0)
,System.Security.Cryptography.Primitives (>= 4.3.0)
- person Equalsk   schedule 05.09.2017app.config
перенаправлении желаемой версии на актуальную версию. - person Martin Liversage   schedule 05.09.2017