我正在尝试使用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中的嵌入式资源不是很了解。
答案 0 :(得分:0)
首先检查fileStream,它不是空的,因为它似乎没有任何内容,这就是你得到Null异常的原因。
而不是写入文件测试它使用msgBox来查看它不是null。
答案 1 :(得分:0)
fileStream
是Nothing,因为在编译期间没有指定资源,或者因为GetFileContents
看不到该资源。
答案 2 :(得分:0)
经过几个小时的战斗,我发现我没有正确导入资源。我不得不去Project - >属性 - >资源并从那里添加现有文件中的资源,而不是从解决方案资源管理器中导入文件。正确添加文件后,我可以通过简单地使用:
将内容写入字符串Dim myString As String = (My.Resources.Settings)
呃,这总是这么简单的解决方案,不知道为什么我没先尝试过。希望这有助于其他人,因为在我看的任何其他地方,我都没有看到这一点。