Я пытаюсь получить доступ к текстовому файлу «achInfo.txt» из моих ресурсов в Visual Studio. Некоторые обходные пути уже указаны на этом сайте, но ни один из них, похоже, не работает для меня. Они просто дают мне одну из двух ошибок, о которых я расскажу позже.Visual Studio 2012 - C#: Чтение файла .txt из ресурсов
Вот и весь метод.
private string[] GetAchMetadata(short element)
{
string[] temp = { "", "" };
string cLine;
try
{
StreamReader sr = new StreamReader(Properties.Resources.achInfo);
while (!sr.EndOfStream)
{
cLine = sr.ReadLine();
if (Microsoft.VisualBasic.Information.IsNumeric(cLine))
{
if (int.Parse(cLine) == element)
{
temp[0] = cLine;
temp[1] = sr.ReadLine();
return temp;
}
}
}
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine("There was a problem in collecting data.");
System.Diagnostics.Debug.Write(e);
}
return temp;
}
Моего первое предположение было использовать Properties.Resources.achInfo
, так как это относится непосредственно к файлу в вопросе. Однако это вызывает ошибку System.ArgumentException
с описанием «Недопустимые символы в пути».
Затем я использовал сборочный решение («Grandma_Lair» быть моим пространством имен, не спрашивайте.):
Assembly asm;
asm = Assembly.GetExecutingAssembly();
StreamReader sr = new StreamReader(asm.GetManifestResourceStream("Grandma_Lair.achInfo.txt"));
Но, это бросает System.ArgumentNullException
с сообщением „Значение не может быть пустым“. Я также установил модификатор доступа на свои ресурсы для публики, и я убедился, что для этого файла установлен встроенный ресурс.
Есть ли у кого-нибудь идеи по моей проблеме?
Вы сказали, что файл установлен в Embedded Resource, но это действие копирования установлено ничем иным, чем «Never copy»? –