You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio打包部署时添加的图片资源对应的文件路径是什么

解决方案

问题原因

你当前硬编码了Debug\\hunting.jpg作为图片路径,仅在本地Debug调试时有效,打包部署后不存在Debug目录,自然无法加载图片。

前置配置(必须完成)

先在VS的解决方案资源管理器中找到你的hunting.jpg文件,右键选择「属性」,修改两个配置项:

  • 「生成操作」改为内容
  • 「复制到输出目录」改为如果较新则复制
    配置完成后,不管是Debug调试、Release编译还是打包部署,这张图片都会自动复制到主程序exe所在的同级目录下。

代码修改

你需要在生成HTML时动态获取当前程序所在的目录,拼接出图片的绝对路径,再转换为HTML可识别的file协议路径即可,同时修正你把img标签写在head和body之间的不规范写法。
修改后的代码片段如下:

private StringBuilder GenerateReport()
{
    StringBuilder html = new StringBuilder();
    StringBuilder css = new StringBuilder();
    try
    {
        // 新增:动态获取logo的绝对路径
        string logoPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "hunting.jpg");
        string logoSrc = new Uri(logoPath).AbsoluteUri;

        css.AppendLine("<style>");
        css.AppendLine("td {padding: 5px; text-align:center; font-weight: bold; text-align: center; font-size: 12px;}");
        css.AppendLine("h1 {color: orange;}");
        css.AppendLine("</style>");

        html.AppendLine("<html>");
        html.AppendLine($"<head>{css}<title>Receipt</title></head>");
        html.AppendLine("<body>");
        // 替换原有img标签,路径用动态获取的地址,用CSS居中替代已废弃的align属性
        html.AppendLine($"<img src='{logoSrc}' style='display:block; margin:0 auto; width: 75px; height: 50px;'>");

        // 后续原有生成收据的代码保持不变
        html.AppendLine($"<h1> Order Receipt</h1>");
        html.Append($"<br></br>");
        html.Append($"<p style = 'text-indent: -550px; font-size: 15px'><b>{"Customer: " + strFirstName + " " + strLastName}</b></p>");
        html.Append($"<p style = 'text-indent: -550px; font-size: 15px'><b>{"Order Number: " + strMaxOrderID}</b></p>");
        html.Append($"<p style = 'text-indent: -550px; font-size: 10px'><b>{"Phone Number: " + strPhoneNumber}</b></p>");

        html.AppendLine("<table>");
        html.AppendLine("<tr><td>Item Name</td><td>Quantity</td><td>Price</td></tr>");
        html.AppendLine("<tr><td colspan=3><hr /></td></tr>");
        for (int i = 0; i < lstShoppingCartName.Count; i++)
        {
            html.Append("<tr>");
            html.Append($"<td>{lstShoppingCartName[i]}</td>");
            html.Append($"<td>{lstShoppingCartQuantity[i]}</td>");
            html.Append($"<td>{lstShoppingCartCost[i]}</td>");
            html.Append("</tr>");
            html.AppendLine("<tr><td colspan=4><hr /></td></tr>");
        }
        html.AppendLine("</table>");
        html.Append($"<br></br><br></br>");
        html.Append($"<p style = 'align:center; text-indent: 390px; font-size: 15px '><b>{"SubTotal: " + decSubTotal.ToString("C2")}</b></p>");
        html.Append($"<p style = 'align:center; text-indent: 371px; font-size: 15px '><b>{"Discount Percent: " + decDiscountPercent.ToString("N3")}</b></p>");
        html.Append($"<p style = 'align:center; text-indent: 422px; font-size: 15px '><b>{"Discount: " + decDiscount.ToString("C2")}</b></p>");
        html.Append($"<p style = 'align:center; text-indent: 297px; font-size: 15px '><b>{"SubTotal After Discount: " + decSubTotalDiscount.ToString("C2")}</b></p>");
        html.Append($"<p style = 'align:center; text-indent: 430px; font-size: 15px '><b>{"Taxes: " + decTaxes.ToString("C2")}</b></p>");
        html.Append($"<p style = 'align:center; text-indent: 450px; font-size: 20px ' ><b>{"Total: " + decTotal.ToString("C2")}</b></p>");
        html.Append($"<div><button onClick='window.print()'> Print this page</button></div>");
        html.AppendLine("</body></html>");
    }
    catch(Exception ex)
    {
        MessageBox.Show(message + ex.Message, "Program Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }
    return html;
}

打包后资源位置说明

按上述配置后,打包安装应用时,hunting.jpg会和你的主程序exe存放在同一个安装目录下,通过AppDomain.CurrentDomain.BaseDirectory可以动态拿到该目录的绝对路径,无需硬编码,调试和部署场景都能兼容。

内容的提问来源于stack exchange,提问作者tech127956

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:57:02