为什么我不能使用 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);
}
}
}
解决方案:
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"
此代码经过简化以帮助我理解。实际代码将在调用程序集中查找 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);
}
}
}
解决方案:
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"