将多个背景图像文件添加到可部署项目中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将多个背景图像文件添加到可部署项目中相关的知识,希望对你有一定的参考价值。
我看了,没有看到解决我问题的答案。我有一个使用随机文件作为背景图像的应用程序。我目前将这些图像存储在本地计算机上的文件夹中,然后遍历文件夹以将图像文件名加载到ArrayList中,该工作正常。但是,当我将应用程序部署到另一台计算机时,我需要一种方法来使其工作。
那么:1)有没有办法用Visual Studio Publish功能部署这些图像,或2)有没有办法将它们添加到项目的Resources区域,然后将它们添加到Array(List)或者遍历它们?我在资源列表中确实有其他文件(图标等),我不想包含这些文件。我可以使用一系列的IF语句来排除它们,但这感觉很糟糕:)你们所有人的想法都会非常感激。
我目前在本地计算机上使用的代码:
ArrayList bgImageList = new ArrayList();
bgImageList = myIO.ProcessDirectory(bgImageFilePath);
DisplayBackgroundImage();
private void DisplayBackgroundImage()
{
Random rnd = new Random();
int index = rnd.Next(0, bgImageList.Count);
this.BackgroundImage = Image.FromFile((String)bgImageList[index]);
}
class FileIO
{
// Note: I think I found this code on this site. I cannot recall the author's name
// but all credit goes to them. I did modify it to return the ArrayList.
ArrayList myList = new ArrayList();
public ArrayList ProcessDirectory(string targetDirectory)
{
string[] fileEntries = Directory.GetFiles(targetDirectory);
foreach (string fileName in fileEntries)
ProcessFile(fileName);
string[] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
foreach (string subdirectory in subdirectoryEntries)
ProcessDirectory(subdirectory);
return myList;
}
private void ProcessFile(string path)
{
myList.Add(path);
}
}
答案
您可以将图像添加到项目中,然后在属性中将Copy to output directory
设置为Copy to if newer这应该足以使Publish功能包括文件
如果没有,您可以编辑.pubxml文件添加新目标
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="*.jpg" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>Resources\%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
并复制文件:
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>CustomCollectFiles;
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>CustomCollectFiles;
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
以上是关于将多个背景图像文件添加到可部署项目中的主要内容,如果未能解决你的问题,请参考以下文章
使用 CMake 将资源(例如,着色器代码;图像)嵌入到可执行文件/库中
使用 Eclipse 将 JavaFX 项目导出到可运行文件