C# streamReader参数异常

C# streamReader参数异常,c#,streamreader,argumentnullexception,C#,Streamreader,Argumentnullexception,你好, 我有一个使用sql express本地数据库的程序。我希望能够使用程序来更新数据库,以运行必要的脚本。文本文件已作为嵌入式资源添加到项目(VS2010),并且该文件包含文本。但它无法打开该文件。我得到一个“ArgumentNullException was unhandled”值不能为null。Parametername:stream“以下是代码 Assembly assem; StreamReader textReader; assem = Assembly.GetExecutingA

你好,
我有一个使用sql express本地数据库的程序。我希望能够使用程序来更新数据库,以运行必要的脚本。文本文件已作为嵌入式资源添加到项目(VS2010),并且该文件包含文本。但它无法打开该文件。我得到一个“ArgumentNullException was unhandled”值不能为null。Parametername:stream“以下是代码

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();

这基本上意味着

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

返回空值。。。如果找不到资源,它会这么做。检查它是否实际位于程序集中,例如,使用Reflector或
assem.GetManifestResourceNames()

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

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

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

老实说,我是一个相当新的程序员,所以我不知道这意味着什么。。。文本文件是通过在解决方案资源管理器中的项目名称上单击鼠标右键“添加新项目文本文件”添加的。然后我用“嵌入式资源”和“更新时复制”设置它的属性。程序集名称和默认命名空间都相同。所以它应该在程序集中,对吗?在我读到你关于“嵌入式资源”属性的评论之前,我也遇到过同样的问题。Thanksstupid错误,我对名称空间的名称不区分大小写。在查看程序集和名称空间名称并将其与我拥有的进行比较后,我看到了它。谢谢