2016-06-25 50 views
3

在OS X El Capitan 10.11.5上運行Xamarin Studio(社區)6.1(內部版本4963),我嘗試使用RNGCryptoService在我的解決方案(針對iOS和Android),我需要使用命名空間System.Security.Cryptography。但是,它似乎像using System.Security.Cryptography;,然後在我的代碼中的某處調用RNGCryptoServiceProvider random = new RNGCryptoServiceProvider();給我錯誤。在Mac OS X上的Xamarin Studio 6.1中使用System.Security.Cryptography時的程序集引用錯誤(CS0234)

錯誤CS0234:名稱空間'System.Security'中不存在類型或名稱空間名稱'Cryptography'。您是否缺少裝配參考? (CS0234)

我試圖在NuGet存儲庫(包括預發佈版本)中查找System.Security.Cryptography軟件包,但沒有找到任何東西。

我錯過了什麼?我在哪裏可以找到裝配參考?

+0

您正在嘗試直接在Android或iOS項目或PCL項目中使用此代碼嗎? –

+0

我是Xamarin Studio在OS X上的新手。我使用Xamarin.Forms開始了一個項目,讓我爲Android和iOS開發UI,因此我認爲它是PCL項目。我需要安全隨機數生成器的代碼部分對於兩個平臺都很常見,因此它既不是Android也不是iOS特定的。 – xtremebytes

+2

Xamarin iOS和Android都支持[RNGCryptoServiceProvider類](https://developer.xamarin.com/guides/cross-platform/advanced/available-assemblies/),但PCL項目不支持。如果你需要一個純粹的PCL實現,JAL建議使用PCLCrypto庫是一個好方法。 –

回答

1

您需要System.Security.Cryptography.Algorithms程序包才能使用RNGCryptoServiceProvider。安裝與的NuGet v 3.4或更高版本:

> PM Install-Package System.Security.Cryptography.Algorithms 

您可能還需要修改project.json文件,以使這個包dotnet5.4的依賴性,而不是全局依賴從抱怨重複類的聲明停止編譯。

後續操作:它看起來像Xamarin.iOS或Android不支持System.Security.dll。作爲替代方案,您可能會與Jeffrey Stedfast的Bouncy Castle加密庫bc-csharp的叉子一起運行,以便與Xamarin.Android和Xamarin.iOS配合使用。

另一個選項可能是使用PCLCrypto庫與this helper class和NuGet的解決方法。

+1

System.Security.Cryptography.Algorithms NuGet包當前不與Xamarin一起使用。 –

+0

@MattWard我認爲你可能不走運。我沒有看到使用這種依賴的另一種方式。 – JAL

+0

我同意@MattWard - 這是一個需要提交錯誤報告的問題嗎? – xtremebytes

相關問題