StreamReader 参数NullException

发布于 2024-11-05 15:10:27 字数 453 浏览 5 评论 0原文

嘿,
我有一个使用 sql Express 本地数据库的程序。我希望能够使用该程序来更新该数据库以运行必要的脚本。文本文件已作为嵌入资源添加到项目(VS2010)中,并且该文件包含文本。但它无法打开该文件。我收到“ArgumentNullException 未处理”“值不能为空。参数名称:流”这是代码...

Assembly assem;
StreamReader textReader;
assem = Assembly.GetExecutingAssembly();
//fails at this line below.
textReader = new StreamReader(assem.GetManifestResourceStream("projectName.sqlUpdates.txt"));

tReader.Peek() != -1)
  script = textReader.ReadToEnd();

Hey there,
I have a program that uses a sql express local DB. I want to be able to update that DB using the program to run the necessary scripts. A text files has been added as an embedded resource to the project (VS2010), and the file contains text. It fails to open the file though. I get an "ArgumentNullException was unhandled" "Value cannot be null. Parametername: stream" here's the code...

Assembly assem;
StreamReader textReader;
assem = Assembly.GetExecutingAssembly();
//fails at this line below.
textReader = new StreamReader(assem.GetManifestResourceStream("projectName.sqlUpdates.txt"));

tReader.Peek() != -1)
  script = textReader.ReadToEnd();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

删除→记忆 2024-11-12 15:10:27

“projectName”是文件 sqlUpdates.txt 所在的完整程序集和命名空间吗?代码是在“projectName”程序集中还是其他地方运行上面的示例?

如果 sqlUpdates.txt 文件位于 projectName 程序集下方的命名空间中,则需要在对 GetManizestResourceStream 的调用中指定该名称空间,即:

Stream resource = assem.GetManifestResourceStream("projectName.nameSpace.sqlUpdates.txt")

Is 'projectName' the full assembly and namespace where the file sqlUpdates.txt lives? Is the code running your example above in the 'projectName' assembly, or somewhere else?

If the sqlUpdates.txt file lives in a namespace below the projectName assembly, then you need to specify that in the call to GetManifiestResourceStream, ie:

Stream resource = assem.GetManifestResourceStream("projectName.nameSpace.sqlUpdates.txt")
日久见人心 2024-11-12 15:10:27

这基本上意味着

assem.GetManifestResourceStream("projectName.sqlUpdates.txt")

返回 null...如果找不到该资源,它将执行此操作。检查它是否确实在程序集中,例如使用 Reflector 或assem.GetManifestResourceNames()。

That basically means that

assem.GetManifestResourceStream("projectName.sqlUpdates.txt")

returned null... which it will do if it can't find that resource. Check that it's actually in the assembly, e.g. with Reflector or assem.GetManifestResourceNames().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文