Как уже говорили другие, вам необходимо убедиться, что при развертывании / установке приложения на другой компьютер также копируются файлы изображений - наиболее подходящим местом, вероятно, является выходной каталог вашего проекта (каталог bin/
).куда идет скомпилированный .exe
) - можно установить для свойства «Копировать в выходной каталог» для файлов значение «Копировать, если новее», чтобы Visual Studio сделала это автоматически для вас.
Еще один момент, который следует учитыватьэто то, как вы загружаете свои изображения - если вы используете относительные пути, то вы можете обнаружить, что ваша программа не может найти ваше изображение, даже если они присутствуют рядом с вашим исполняемым файлом, потому что рабочий каталог отличается, попробуйте запустить вашу программу из командной строки на вашеммашина разработки, чтобы увидеть, как это происходит:
:: 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
.Вы должны изменить свой код так, чтобы он выглядел примерно так:
Другой альтернативой может быть использование встроенных ресурсов .Это немного сложнее, однако имеет то преимущество, что ваши изображения встроены в сам выходной файл .exe - никаких дополнительных файлов не требуется, поэтому уменьшается вероятность того, что требуемые файлы не могут быть найдены, поскольку они были удалены / перемещены / не былископировано во время установки.
string path = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "myfile.png");
var image = LoadImage(path);