2016-06-25 6 views
3

OS XでのXamarin Studio 6.1(ビルド4963)の実行El Capitan 10.11.5、RNGCryptoService名前空間System.Security.Cryptographyを使用する必要のある私のソリューション(iOSとAndroidを対象とする)でしかし、それはusing System.Security.Cryptography;のように思われ、私のコードのどこかでRNGCryptoServiceProvider random = new RNGCryptoServiceProvider();を呼び出すとエラーが出る。Mac OS XのXamarin Studio 6.1でSystem.Security.Cryptographyを使用した場合のアセンブリ参照エラー(CS0234)

エラーCS0234:型または名前空間の名前 'Cryptography'が 'System.Security'名前空間に存在しません。アセンブリの参照がありませんか? (CS0234)

NuGetリポジトリ(プレリリース版を含む)でSystem.Security.Cryptographyパッケージを検索しようとしましたが、何も見つかりませんでした。

私には何が欠けていますか?アセンブリの参照はどこにありますか?

+0

このコードをAndroidまたはiOSプロジェクトまたはPCLプロジェクトで直接使用しようとしていますか? –

+0

私はOS XのXamarin Studioを初めて使いました。私はAndroidとiOSの両方のUIを開発できるようにXamarin.Formsを使ってプロジェクトを開始しました。そのため、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パッケージが必要です。 3.4以降vのNuGetでそれをインストールします。

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

あなたはまた、重複したクラス宣言に文句からコンパイラを停止するには、このパッケージにdotnet5.4の依存関係ではなくグローバルな依存関係を作るためにあなたのproject.jsonファイルを変更する必要があるかもしれません。

フォローアップ:System.Security.dllはXamarin.iOSやAndroidではサポートされていないようです。別の方法として、Jeffrey StedfastのBouncy Castle暗号化ライブラリbc-csharpをXamarin.AndroidとXamarin.iOSで使用するための運があるかもしれません。

もう1つの選択肢は、this helper classPCLCryptoライブラリとNuGetの回避策を使用することです。

+1

System.Security.Cryptography.Algorithms NuGetパッケージは現在Xamarinでは動作しません。 –

+0

@MattWardそれであなたは運が悪いと思うよ。この依存関係を使用する別の方法はありません。 – JAL

+0

私は@MattWardと同意します - これはバグレポートを提出する必要があるので問題ですか? – xtremebytes

関連する問題