2

嘿,
我有一个使用 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();
4

2 回答 2

2

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

如果 sqlUpdates.txt 文件位于 projectName 程序集下的命名空间中,那么您需要在对 GetManifiestResourceStream 的调用中指定它,即:

Stream resource = assem.GetManifestResourceStream("projectName.nameSpace.sqlUpdates.txt")
于 2011-05-05T18:35:49.250 回答
1

这基本上意味着

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

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

于 2011-05-05T18:30:15.203 回答