2

ねえ、
私はsqlexpressローカルDBを使用するプログラムを持っています。プログラムを使用してそのDBを更新し、必要なスクリプトを実行できるようにしたい。プロジェクトに埋め込みリソースとしてテキストファイルが追加され(VS2010)、ファイルにはテキストが含まれています。ただし、ファイルを開くことができません。「ArgumentNullExceptionwasunhandled」「値をnullにすることはできません。パラメータ名: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();
4

2 に答える 2

2

'projectName'は、ファイルsqlUpdates.txtが存在する完全なアセンブリと名前空間ですか?上記の例を実行しているコードは、「projectName」アセンブリ、または他の場所にありますか?

sqlUpdates.txtファイルがprojectNameアセンブリの下の名前空間にある場合は、GetManizestResourceStreamの呼び出しでそれを指定する必要があります。

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 に答える