将嵌入资源内容保存到字符串

时间:2016-01-08 16:57:47

标签: vb.net

我正在尝试使用Visual Studio 2013将嵌入文件的内容复制到Visual Basic中的字符串。我已经导入了资源(Settings.xml)并将其设置为嵌入式资源。这就是我所拥有的:

class UserViewSet(viewsets.ModelViewSet):

    model = User
    serializer_class = UserSerializer

    def get_queryset(self):
        country = self.kwargs['country']
        return User.objects.using(country).all()

当我尝试使用以下内容将内容保存为字符串时:

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.

我读过的其他内容都非常有帮助,希望有人能告诉我为什么我会这样做。我对vb.net中的嵌入式资源不是很了解。

3 个答案:

答案 0 :(得分:0)

首先检查fileStream,它不是空的,因为它似乎没有任何内容,这就是你得到Null异常的原因。

而不是写入文件测试它使用msgBox来查看它不是null。

答案 1 :(得分:0)

fileStream是Nothing,因为在编译期间没有指定资源,或者因为GetFileContents看不到该资源。

答案 2 :(得分:0)

经过几个小时的战斗,我发现我没有正确导入资源。我不得不去Project - >属性 - >资源并从那里添加现有文件中的资源,而不是从解决方案资源管理器中导入文件。正确添加文件后,我可以通过简单地使用:

将内容写入字符串
Dim myString As String = (My.Resources.Settings)

呃,这总是这么简单的解决方案,不知道为什么我没先尝试过。希望这有助于其他人,因为在我看的任何其他地方,我都没有看到这一点。