|
2017/04/10(Mon) 11:32:16 編集(投稿者)
■No83781 (わっちょい さん) に返信 > EXEファイルからバイナリファイルを生成したいのですが > プロジェクトファイルにバイナリファイルをD&Dで取り込み、 > そのファイルをそのまま指定したフォルダーに出力するにはどうしたら良いですか?
プロジェクト内に追加したバイナリーファイルのプロパティで、 [出力ディレクトリにコピー]を何にしていますか?
デフォルトでは「コピーしない」になっていると思いますが、それを 「常にコピーする」または「新しい場合はコピーする」にしておけば、 ビルド時に EXE と同じフォルダーにコピーされますので、 追加のプログラムコードは不要になります。
ファイルとして配布するのではなく、EXE 内に埋め込んでおきたいのなら、 [My Project]の[リソース]タブで、バイナリファイルを埋め込むことができます。 このようにして埋め込まれたリソースは、 Dim bin As Byte() = My.Resources.リソース名 で取り出せますので、 System.IO.File.WriteAllBytes("C:\フォルダー\Example.dat", bin) のようにしてファイルとして取り出せます。通常はこの方法をお奨めします。
あるいは、[My Project]の[リソース]タブではなく、プロジェクトに直接追加した上で、 そのバイナリーファイルのプロパティで、[ビルド アクション]を 「埋め込まれたリソース」にしているのであれば、下記のようにします。 ただ、リソースを埋め込むのであれば、上記の[My Project]を用いた方が扱いやすいでしょう。
Dim asm As System.Reflection.Assembly = System.Reflection.Assembly.GetExecutingAssembly()
'リソース名の一覧を取得 Dim names As String() = asm.GetManifestResourceNames()
'取り出すリソース名を指定 'リソース名が明らかな場合は、GetManifestResourceNames を呼ばずに直接指定しても OK Dim name As String = names(0)
Using stm As System.IO.Stream = asm.GetManifestResourceStream(name), _ outFile As New System.IO.StreamWriter("C:\フォルダー\Example.dat") stm.CopyTo(outFile.BaseStream) outFile.Flush() outFile.Close() End Using
※.NET 4 未満の場合は、CopyTo の代わりに stm.Read と outFile.Write で代用
|