使用C#使用Assembly GetManifestResourceStream方法读取资源文件

时间:2017-03-07 08:37:15

标签: c# .net ssl resources .net-assembly

我在项目的根文件夹下有一个证书。项目名称是SingleSignOn,但我无法使用GetManifestResourceStream内置方法读取方法。

源代码

namespace SingleSignOn
{
    public class Program
    {
        static void Main(string[] args)
         {
            var assembly = typeof(Program).Assembly;
            var super = assembly.GetManifestResourceNames();
            using (var stream = assembly.GetManifestResourceStream("SingleSignOn.idsrv3test.pfx"))
            {

            }
        }
    }
}

解决方案资源管理器的快照 enter image description here

我从上述内置方法获取NULL GetManifestResourceStream

enter image description here

我不知道我错过了什么。所述证书的URL为https://github.com/IdentityServer/IdentityServer3.Samples/blob/master/source/Certificates/idsrv3test.pfx

请帮助我阅读证书。

5 个答案:

答案 0 :(得分:2)

试试这个:

 var resourceName = "SingleSignOn.idsrv3test.pfx";
            using (var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName))
            {
                TextReader tr = new StreamReader(stream);
                string fileContents = tr.ReadToEnd();
            }

注意:将文件作为嵌入资源。档案>右键单击>属性>构建行动>选择嵌入资源。

答案 1 :(得分:1)

确保该文件是“嵌入式资源”。 Right click the pfx file -> Properties -> Build Action,将其设为'嵌入资源'

答案 2 :(得分:1)

PFX是一个可以容纳一个或多个证书的容器。您可以使用以下代码在c#中打开它们

X509Certificate2Collection collection = new X509Certificate2Collection();
collection.Import("idsrv3test.pfx", "password-for-pfx", X509KeyStorageFlags.PersistKeySet);

现在遍历集合并找到您需要的证书

foreach (X509Certificate2 cert in collection)
{
    // work with cert
}

答案 3 :(得分:1)

解决方案2

步骤1:更改.PFX文件的属性 idsrv3test.pfx属性,将Build action设置为Embedded Resource。

第2步:代码更改: -

onAuthStateChanged()

答案 4 :(得分:1)

我个人的方法是为Assembly类编写一个扩展,因为这似乎是一个应该包含在该类中的方法。

因此,正如其他海报所述,首先要确保您的文本文件被标记为“嵌入式资源”,然后使用类似于以下内容的代码:

button.tintColor = UIColor.red

(上面的内容可以更简洁地编码,但为了演示的目的,我还是这样做了)