有必要将所有外部文件嵌入到可执行文件中,并更改您的代码以使用这些嵌入文件,而不是期望磁盘上的文件。
要使用图像或任何您需要的文件(“xml/txt/doc”),您需要将文件的构建操作设置为 Embedded Resource,并使用文件的完全限定名称调用该方法,其中组装了名称像这样:
[RootNameSpaceOfTheProject].[NameOfFolderInTheProject].[FileNameWithExtension]
例子:
调用方法:
var b = ResourceOperations.GetResourceAsByteArray("Store.Resources.EmbeddedIcons.toolbox.png"); 例如,现在您可以将字节数组写入临时文件并将其用作图像源,或者您可以直接从字节数组构建图像。至少,你有你的数据...
并将这些文件保存到磁盘上,我们应该由@Jon Skeet编写代码:
public static void CopyStream(Stream input, Stream output)
{
// Insert null checking here for production
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
}
然后调用它:
using (Stream input = assembly.GetManifestResourceStream(resourceName))
using (Stream output = File.Create(path))
{
CopyStream(input, output);
}