Xamarin、ポータブルマルチプラットフォームソリューション、ポータブルプロジェクトセクションPCLCrypto.dllランタイムエラー
MD5ハッシングについては、クラスmd5を作成します。プロジェクトのレファレンスPCLCrypto.dllに追加します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PCLCrypto;
using static PCLCrypto.WinRTCrypto;
namespace WCHSBMobile
{
public static class md5
{
public static string GetMD5hash(string data)
{
//string result = data;
IHashAlgorithmProvider algoProv = PCLCrypto.WinRTCrypto.HashAlgorithmProvider.OpenAlgorithm(HashAlgorithm.Md5);
byte[] dataB = Encoding.UTF8.GetBytes(data);
byte[] dataHash = algoProv.HashData(dataB);
var hex = new StringBuilder(dataHash.Length * 2);
foreach (byte b in dataHash)
{
hex.AppendFormat("{0:x2}", b);
}
return hex.ToString();
//return result;
}
}
}
この行にAndroid上でテストするとき、私は(HashAlgorithm.Md5)ランタイムエラーIHashAlgorithmProvider algoProv = PCLCrypto.WinRTCrypto.HashAlgorithmProvider.OpenAlgorithmを取得します。エラーが発生する PCLCrypto.NotImplementedByReferenceAssemblyException:これは参照アセンブリであり、実装は含まれていません。プラットフォーム実装アセンブリが実行時に使用されるように、PCLCryptoパッケージをアプリケーションにインストールしてください。 どうすればよいですか?あなたは私に何か解決策をアドバイスできますか? ありがとうございます
PCLCrypto NugetパッケージをAndroid固有のプロジェクトに追加しましたか?プラットフォーム固有のコードを使用する必要があるため、PCLCryptoをPCLおよび各プラットフォームに追加する必要があります。 – dylansturg
VSを更新する前に正常にビルドしたプロジェクトで、同じエラーが発生しました。 はい、私はすべてのプロジェクトでPCLCryptoを持っています。 – Thomas
デバイスからアプリケーションをアンインストールしてから展開した後、かなり変わった – Thomas