为什么我不能使用GetExecutingAssembly.GetFile()访问文件?

时间:2016-07-21 21:12:02

标签: c# assemblies

此代码是简化的,以帮助我理解。实际代码将在调用程序集中查找xml文件。但是,在这个简化的示例中,我甚至无法访问xml文件。我已将TestFile.xml设置为嵌入式资源。 有什么想法为什么这个代码不起作用?

using System;
using System.Reflection;

namespace Testing
{
    class Program
    {
        static void Main(string[] args)
        {
            var test = new A();
            test.TestGettingAssemblies();

            Console.ReadKey();
        }
    }

    internal class A
    {
        internal void TestGettingAssemblies()
        {
            Console.WriteLine(Assembly.GetExecutingAssembly().FullName);
            Console.WriteLine(Assembly.GetExecutingAssembly().GetFile("TestFile.xml") == null);
            Console.WriteLine(Assembly.GetCallingAssembly().FullName);
        }
    }
}

CodeResults

1 个答案:

答案 0 :(得分:0)

解决方案:

var assembly = Assembly.GetExecutingAssembly();
using(var stream = assembly.GetManifestResourceStream("TestFile.xml"))
using(TextReader tr = new StreamReader(stream))
{
      Console.WriteLine(tr.ReadToEnd());
}

有关详细信息,请转到here

它不起作用,我建议你拨打assembly.GetManifestResourceNames()并检查结果是否为" TestFile.xml"