【问题标题】:How can I reference a resource (png) from a seperate project in the same solution如何从同一解决方案中的单独项目引用资源(png)
【发布时间】:2020-02-28 01:19:58
【问题描述】:

我的解决方案结构如下:

  1. 类库(名称 = Chess)
    • 图像
      • Pawn.png
  2. WPF Core 3.1 项目(名称 = ChessApp)
    • MainWindow.xaml

我想在图像标记的 MainWindow.xaml 内显示 Pawn.png 图像。 当我的 WPF 项目中有图像文件时,我可以通过相对路径轻松地引用它们。 当资源在不同的项目中时,我无法解决这个问题。

我在 Image 文件夹 a 中的图像具有构建操作 Resource 并且总是被复制到输出目录。 Chess 项目在 ChessApp 中被正确引用。

显然有很多类似的问题,但没有一个答案对我有用。 我都试过了:

URI:How to use Resources of from another project in WPF?

<Image Source="pack://application:,,,/Chess;Component/Images/Pawn.png"></Image>


无 URI:How do I use an image from another project in my XAML?

<Image Source="/Chess;Component/Images/Pawn.png"></Image>


所以我不知道该怎么办。

解决方法:
向一个类添加一个属性,该属性从相对路径中返回图像的完整路径 Path.GetFullPath(@"..\..\..\..\Chess\Images\Pawn.png");

【问题讨论】:

  • 从 VS 菜单:添加现有项目。然后浏览器在其他项目中归档。在解决方案资源管理器中找到参考文件并右键单击。然后选择复制选项。您可以使用记事本打开 csproj 文件并进行简单的编辑。
  • 那些说明非常不清楚。该库应用作库(dll),用户不必执行其他步骤。
  • 请注意,如果构建操作是资源,则不需要将文件复制到输出目录。它们被编译到程序集中。
  • 正确的完全合格的资源文件包 URI 应该是 pack://application:,,,/Chess;component/Images/Pawn.png 和小写的 ;component 部分。
  • 在我的问题中,您可以看到我已经尝试过了,而小写的component 仍然没有解决问题。

标签: c# wpf xaml


【解决方案1】:

用一个普通的netcoreapp3.1 类库试过这个。

虽然在 XAML 设计器中 ChessApp 的 MainWindow 正确显示图像资源,但我在运行时看到 System.Resources.MissingManifestResourceException

将类库项目的 Sdk 属性从

<Project Sdk="Microsoft.NET.Sdk">

<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">

解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-02
    相关资源
    最近更新 更多