2016-07-21 1 views
-1

Этот код упрощен для моего понимания. Фактический код будет находить XML-файл в вызывающей сборке. Тем не менее, я не могу даже получить доступ к xml-файлу в этом упрощенном примере. Я установил TestFile.xml в качестве встроенного ресурса. Любые идеи, почему этот код не работает?Почему я не могу получить доступ к файлу с помощью GetExecutingAssembly.GetFile()?

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

+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() и проверить, если результат contanins «TestFile.xml»

+0

Спасибо. Я смог получить его с помощью GetManifestResouceStream. Странно, что GetFile не работает. –

Смежные вопросы