Как ссылаться на файл xml в проекте библиотеки классов

У меня есть проект библиотеки классов. В одном из классов мне нужен доступ к XML файлу. Как ссылаться на путь к этому файлу в классе? Файл находится в одной из папок того же проекта.

Ответ 1

Если вы укажите файл Xml, который будет скомпилирован в вашу сборку, вы можете прочитать его во время выполнения, используя отражение.

Assembly asm = Assembly.GetExecutingAssembly();
XmlDocument doc = new XmlDocument();
XmlTextReader reader = new XmlTextReader(asm.GetManifestResourceStream("MyNamespace.MyXmlFile.xml"));
doc.Load(reader);

Update

Поскольку конструктор X509Certificate2 будет принимать только путь к файлу сертификата или массив байтов, вы можете использовать настраиваемый путь к файлу сертификата вместо того, чтобы вставлять его в свою сборку.

Ответ 2

Используя ссылку, которую @Filburt предоставил:

Сначала измените BuildAction вашего XML файла на встроенный ресурс. Он будет добавлен в вашу сборку с корневым пространством имен вашей сборки и именем файла: Например, если корневое пространство имен вашего проекта является MyNamespace, ресурс может быть назван MyNamespace.MyXmlFile.xml

   Assembly _assembly;
   StreamReader _textStreamReader;
   _assembly = Assembly.GetExecutingAssembly();
   _textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("MyNameSpace.MyXmlFile.xml"));

Вы можете использовать любое количество классов, которые принимают поток в качестве параметра конструктора.