使用 ClickOnce 部署的 C# WPF 应用程序中的图像路径
path to image in deployed C# WPF app with ClickOnce
我在使用 ClickOnce 部署的项目中设置图像的正确文件路径时遇到问题。
用于生成 pdf 文档的第 3 方库需要图像路径作为方法的输入。
public Image AddImage(string fileName);
我正在使用以下库生成 pdf 文档 - https://www.nuget.org/packages/PDFsharp-MigraDoc-gdi/1.50.5147/
图像位于链接到 WPF 项目的 class 库项目中。
图像在 visual studio 中具有以下设置。
但是安装后,图片没有出现在安装位置。
如果它出现,我会使用以下代码获取图像路径。
string path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); \+image name
我做错了什么?
我应该使用其他方法吗?
感谢@IlikedtheoldWhosebug,我设法将图像作为嵌入式资源包含到解决方案中,它在ClickOnce发布后也能正常工作。
- 我从 pdfsharp 文档中复制了步骤 -pdfsharp.net/wiki/MigraDoc_FilelessImages.ashx
- 已将构建操作更改为嵌入式资源
- 已创建格式正确的图像路径 - Namespace.FolderWhereIsImage.NameOfImage.png
示例代码来自 pdfsharp 文档
private string MigraDocFilenameFromByteArray(byte[] image)
{
return "base64:" + Convert.ToBase64String(image);
}
private byte[] LoadImage(string name)
{
var assembly = Assembly.GetExecutingAssembly();
using (Stream stream = assembly.GetManifestResourceStream(name))
{
if (stream == null)
throw new ArgumentException("No resource with name " + name);
int count = (int)stream.Length;
byte[] data = new byte[count];
stream.Read(data, 0, count);
return data;
}
}
byte[] image = LoadImage("SampleProject.Resources.logo.png");
string imageFilename = MigraDocFilenameFromByteArray(image);
row.Cells[2].AddParagraph().AddImage(imageFilename);
"SampleProject.Resources.logo.png"
.. Resources 是项目中文件夹的名称,SampleProject 是项目名称。
我在使用 ClickOnce 部署的项目中设置图像的正确文件路径时遇到问题。 用于生成 pdf 文档的第 3 方库需要图像路径作为方法的输入。
public Image AddImage(string fileName);
我正在使用以下库生成 pdf 文档 - https://www.nuget.org/packages/PDFsharp-MigraDoc-gdi/1.50.5147/
图像位于链接到 WPF 项目的 class 库项目中。
图像在 visual studio 中具有以下设置。
但是安装后,图片没有出现在安装位置。
如果它出现,我会使用以下代码获取图像路径。
string path = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location); \+image name
我做错了什么?
我应该使用其他方法吗?
感谢@IlikedtheoldWhosebug,我设法将图像作为嵌入式资源包含到解决方案中,它在ClickOnce发布后也能正常工作。
- 我从 pdfsharp 文档中复制了步骤 -pdfsharp.net/wiki/MigraDoc_FilelessImages.ashx
- 已将构建操作更改为嵌入式资源
- 已创建格式正确的图像路径 - Namespace.FolderWhereIsImage.NameOfImage.png
示例代码来自 pdfsharp 文档
private string MigraDocFilenameFromByteArray(byte[] image)
{
return "base64:" + Convert.ToBase64String(image);
}
private byte[] LoadImage(string name)
{
var assembly = Assembly.GetExecutingAssembly();
using (Stream stream = assembly.GetManifestResourceStream(name))
{
if (stream == null)
throw new ArgumentException("No resource with name " + name);
int count = (int)stream.Length;
byte[] data = new byte[count];
stream.Read(data, 0, count);
return data;
}
}
byte[] image = LoadImage("SampleProject.Resources.logo.png");
string imageFilename = MigraDocFilenameFromByteArray(image);
row.Cells[2].AddParagraph().AddImage(imageFilename);
"SampleProject.Resources.logo.png"
.. Resources 是项目中文件夹的名称,SampleProject 是项目名称。