在Windows Phone 8中调用PCL中的方法时抛出了System.IO.FileNotFoundException

时间:2014-07-04 06:25:49

标签: c# c#-4.0 windows-phone-8 portable-class-library class-library

我正致力于在Windows Phone 8项目的PCL中解密字符串(从数据库中读取)。以下是场景:

具有3个项目的解决方案, Windows phone UI Windows Phone便携式类库类库

类库项目有一个 StringDecryption 类,其中包含以下代码:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace DecryptString
{
    public class StringDecryption
    {
        public string Decryption(string encryptedTExt)
        {
            var protectedText = this.ReadEncryptedData(encryptedTExt);

            // Decrypt the text by using the Unprotect method.
            var textByte = ProtectedData.Unprotect(protectedText, null, DataProtectionScope.CurrentUser);

            // Convert the text from byte to string and display it in the text box.
            return Encoding.UTF8.GetString(textByte, 0, textByte.Length);

        }

        public byte[] ReadEncryptedData(string text)
        {
            var reader = new StreamReader(text).BaseStream;
            var textArray = new byte[reader.Length];

            reader.Read(textArray, 0, textArray.Length);
            reader.Close();

            return textArray;
        }

        public string Getname()
        {
            return "MyName";
        }
    }
}

我将这个类库中的dll引用到Portable类库,当从这个库调用方法Decryption时,它抛出 System.IO.FileNotFoundException 但是当我调用 Getname 方法。来自异常的完整消息是无法加载文件或程序集' System.Security,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其中一个依赖项。系统找不到指定的文件。

有没有办法解决这个问题或以其他方式加密或解密PCL中的字符串?

提前致谢。

1 个答案:

答案 0 :(得分:1)

听起来您正在引用“便携式类库”中的“类库”。这不受支持 - 类库仅支持一个平台(可能是完整的.NET Framework),因此它不会在您的可移植类库所针对的其他平台上运行。

  

有没有办法解决此问题或任何其他加密方式或   解密PCL中的字符串??

我建议您查看PCL Crypto库。

有关我认为可以为您提供帮助的更多一般信息,请参阅我的博文:How to Make Portable Class Libraries Work for You