我想在我的.NET標準1.4庫中使用System.Security.Cryptography.RNGCryptoServiceProvider類,並根據this主題my代碼如下所示:無法加載文件或程序集'System.Security.Cryptography.Algorithms,版本= 4.1.0.0
private byte[] GenerateRandomNumber(int length)
{
using (var randomNumberGenerator = RandomNumberGenerator.Create())
{
var number = new byte[length];
randomNumberGenerator.GetBytes(number);
return number;
}
}
我還從圖書館的NuGet安裝:
- System.Security.Cryptography.Algorithms v = 4.3.0
- System.Security.Cryptography.Primitives 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 page沒有4.1.0.0版本中,只有4.1.0-rc2-24027和安裝此版本後,我得到確切同樣的異常。
出了什麼問題?
編輯:從.NET標準 切換1.4〜1.6沒有幫助
EDIT2:
當我打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
它說它具有.NET Standard 1.4的以下依賴關係,您是否也添加了這些引用? 'System.IO(> = 4.3.0)','System.Runtime(> = 4.3.0),'System.Security.Cryptography.Primitives(> = 4.3.0)' – Equalsk
是的,我有System.IO 4.3 .0,System.Runtime 4.3.0和System.Security.Cryptography.Primitives 4.3.0 – Carlos28
我建議你使用[Fusion Log Viewer](https://docs.microsoft.com/en-us/dotnet/framework/tools/fuslogvw-exe-assembly-binding-log-viewer)來獲取有關加載錯誤的詳細信息。儘管它是兼容的,但bin文件夾中的程序集版本很可能與請求的版本不同。然後你必須在你的'app.config'中添加一個[綁定重定向](https://docs.microsoft.com/en-us/dotnet/framework/configure-apps/redirect-assembly-versions)重定向所需的版本到實際的版本。 –