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

Why can't I access a file using GetExecutingAssembly.GetFile()?

此代码经过简化以帮助我理解。实际代码将在调用程序集中查找 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);
        }
    }
}

Code, Results

解决方案:

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"