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

将图片资源打包进NuGet库后无法通过Pack URI访问的问题

问题分析与解决方案

你遇到的核心问题是:本地项目引用时能正常访问嵌入资源的Pack URI,在通过NuGet包引用时失效,根源在于NuGet打包时的资源配置和URI路径匹配问题。

1. 修正项目文件的嵌入资源配置

你当前的配置错误地使用了Pack和PackagePath属性——这两个属性是用来把资源作为NuGet包中的独立文件分发,而非嵌入到程序集里。正确的嵌入资源配置应该确保资源被打包进程序集,并且逻辑路径一致:

<ItemGroup>
  <EmbeddedResource Include="Resources\dexie_black_medium.png">
    <LogicalName>Resources.dexie_black_medium.png</LogicalName>
  </EmbeddedResource>
  <EmbeddedResource Include="Resources\dexie_medium.png">
    <LogicalName>Resources.dexie_medium.png</LogicalName>
  </EmbeddedResource>
  <EmbeddedResource Include="Resources\dexie_white_medium.png">
    <LogicalName>Resources.dexie_white_medium.png</LogicalName>
  </EmbeddedResource>
  <EmbeddedResource Include="Resources\duck_black_medium.png">
    <LogicalName>Resources.duck_black_medium.png</LogicalName>
  </EmbeddedResource>
  <EmbeddedResource Include="Resources\duck_medium.png">
    <LogicalName>Resources.duck_medium.png</LogicalName>
  </EmbeddedResource>
  <EmbeddedResource Include="Resources\duck_white_medium.png">
    <LogicalName>Resources.duck_white_medium.png</LogicalName>
  </EmbeddedResource>
</ItemGroup>
  • LogicalName指定了资源在程序集中的嵌入路径,确保和本地引用时的层级一致。
  • 移除Pack和PackagePath,避免资源被当作独立文件分发。

2. 确认Pack URI的正确性

NuGet引用时,Pack URI必须严格匹配程序集名称和资源嵌入路径:

<Image Source="pack://application:,,,/Dexie.Space.Net;component/Resources/dexie_medium.png"></Image>
  • 确保Dexie.Space.Net是NuGet包中程序集的准确名称(和项目的AssemblyName完全一致)。
  • 如果程序集默认命名空间与AssemblyName不同,需要调整LogicalName为{默认命名空间}.Resources.dexie_medium.png,对应的URI也要改为:
    <Image Source="pack://application:,,,/Dexie.Space.Net;component/{默认命名空间}/Resources/dexie_medium.png"></Image>
    

3. 验证资源嵌入状态

可以通过以下步骤确认资源是否正确嵌入:

  • 将NuGet包后缀改为.zip并解压,找到lib目录下的目标程序集。
  • 用ILSpy等工具打开程序集,查看Resources节点下是否存在对应图片文件。

4. 备选方案:内容文件分发

如果不需要嵌入资源,而是希望资源作为独立文件随NuGet包分发,可修改配置为:

<ItemGroup>
  <Content Include="Resources\dexie_black_medium.png">
    <Pack>True</Pack>
    <PackagePath>contentFiles\any\any\Resources\</PackagePath>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
  <!-- 其他资源按此格式配置 -->
</ItemGroup>

此时访问路径改为相对路径即可:

<Image Source="Resources/dexie_medium.png"></Image>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 08:45:46