他の人がすでに言っているように、アプリケーションを別のマシンにデプロイ/インストールするときに、イメージファイルもコピーされることを確認する必要があります-最も適切な場所は、おそらくプロジェクトの出力ディレクトリ(bin/
コンパイルされたディレクトリ.exe
)です-ファイルの「出力ディレクトリにコピー」プロパティを「新しい場合はコピー」に設定して、VisualStudioにこれを自動的に実行させることができます。
考慮すべきもう1つのことは、画像の読み込み方法です。相対パスを使用している場合、作業ディレクトリが異なるために実行可能ファイルの横に画像が存在していても、プログラムが画像を見つけられない場合があります。これが発生していることを確認するには、開発マシンのコマンドプロンプトを使用します。
:: Make sure that the current working directory is different from the one app.exe is in
C:\> path\to\my\program\app.exe
コードが次のようになっている場合:
var image = LoadImage("myfile.png");
c:\myfile.png
プログラムがの代わりにで画像を探しているため、これはおそらく失敗しますC:\path\to\my\program\app.exe
。次のようにコードを変更する必要があります。
もう1つの方法は、埋め込みリソースを使用することです。これは少し複雑ですが、画像が出力.exe自体に埋め込まれているという利点があります。追加のファイルが必要ないため、削除/移動/されていないために必要なファイルが見つからない可能性が低くなります。インストール中にコピーされます。
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "myfile.png");
var image = LoadImage(path);