2016-01-08 1 views
0

Я пытаюсь скопировать содержимое встроенного файла в строку в Visual Basic с помощью Visual Studio 2013. У меня уже есть ресурс (Settings.xml), импортированный и установленный как встроенный ресурс. Вот что у меня есть:Сохранение содержимого встроенных ресурсов в строку

Function GetFileContents(ByVal FileName As String) As String 
    Dim this As [Assembly] 
    Dim fileStream As IO.Stream 
    Dim streamReader As IO.StreamReader 
    Dim strContents As String 
    this = System.Reflection.Assembly.GetExecutingAssembly 
    fileStream = this.GetManifestResourceStream(FileName) 
    streamReader = New IO.StreamReader(fileStream) 
    strContents = streamReader.ReadToEnd 
    streamReader.Close() 
    Return strContents 
End Function 

Когда я пытаюсь сохранить содержимое в строку с помощью:

Dim contents As String = GetFileContents("Settings.xml") 

Я получаю следующее сообщение об ошибке:

An unhandled exception of type 'System.ArgumentNullException' occurred in mscorlib.dll 

Additional information: Value cannot be null. 

Что происходит в строке :

streamReader = New IO.StreamReader(fileStream) 

Ничего другого у меня нет ead был очень полезен, надеясь, что кто-то здесь может сказать мне, почему я получаю это. Я не очень хорошо разбираюсь в встроенных ресурсах в vb.net.

+1

Я знаю, что это VB.NET, а не C#, но проблема связана с .NET, а не с языком, читайте здесь: http://stackoverflow.com/a/10773066/3932049 –

ответ

0

Сначала проверьте файлStream, что его не пусто, так как кажется, что он ничего не содержит, поэтому вы получаете исключение Null.

Вместо того, чтобы писать в файл, проверьте его с помощью msgBox, чтобы увидеть его не null.

0

fileStream Ничего, потому что во время компиляции не указывалось никаких ресурсов или потому, что ресурс не отображается GetFileContents.

0

После долгих действий, я обнаружил, что я не импортировал ресурс правильно. Мне нужно было перейти в Project -> Properties -> Resources и добавить ресурс из существующего файла, а не импортировать файл из обозревателя решений. После добавления файла правильно, я был в состоянии написать содержимое в строку, просто с помощью:

Dim myString As String = (My.Resources.Settings) 

Тьфу, это всегда такое простое решение, не знаю, почему я не пробовал, что первым. Надеюсь, это помогает кому-то другому, потому что я ничего не видел об этом в другом месте, где я смотрел.

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