簡體   English   中英

Visual Studio:跨項目引用資源的正確方法是什么?

[英]Visual Studio: What's the correct way to reference resources across projects?

輔助引用中的.xaml映像位置在運行時不會變成正確的資源位置,而是引用了主要參考資源文件夾。 我該如何更改?

背景 -

我有幾個項目的解決方案。 這里重要的三個項目是

  1. 作為類庫構建的WPF項目
  2. 默認的類庫
  3. 用於測試的控制台應用程序

WPF項目的資源中帶有.png圖像。 在創建的MainWindow中,通過以下方式調用它:

<ImageBrush
  ImageSource="pack://siteoforigin:,,,/Resources/MyDemoImage.png" 
  Stretch="Uniform"/>

當我直接通過console app運行WPF窗口的實例時,它可以正常工作。 資源引用在運行時變為:

C:\\Users\\me.me\\Documents\\Visual Studio 2015\\Projects\\sol\\ WPFProjectName\\ bin\\Resources\\MyDemoImage.png

但是,如果我在類庫項目中創建對WPF項目的引用,然后調用類庫的實例,則地址變為

C:\\Users\\me.me\\Documents\\Visual Studio 2015\\Projects\\sol\\ ClassLibraryName\\ bin\\Resources\\MyDemoImage.png

因此,此“打包”地址成為對類庫資源而不是WPF項目資源文件夾的引用。

現在,我想我也可以簡單地將資源添加到該中級類庫中,但是我想知道是否存在某種正確的方式來引用“輔助”資源,所以我只需要添加一次圖像?

順便說一句,當我嘗試編譯它時遇到的錯誤是System.Windows.Baml2006.TypeConverterMarkup我找到了關於此問題的答案,但是嘗試了他們說的無濟於事(將圖像標記為始終復制等)。

更改

pack://siteoforigin:,,,/Resources/MyDemoImage.png

pack://application:,,,/AssemblyName;component/Resources/MyDemoImage.png

感謝@Clemens的建議。 這很棒。

我只是想回答並分享我在嘗試這種方法時發現的其他一些挫折感。

使用pack://application:,,,/AssemblyName;component/Resources/MyDemoImage.png對我的第一張圖片非常pack://application:,,,/AssemblyName;component/Resources/MyDemoImage.png 然后,我在嘗試對第二張/第三張圖片執行相同操作時遇到了很多麻煩。 它保持編譯正常,但在運行時內部異常被拋出,找不到“ resources / mydemoimage.png”

其原因是由於圖像上的BuildAction 我一直在使用不同的類型,其中一些適用於我的本地副本(例如,將BuildAction設置為Embedded Resource實際上解決了我遇到的最初問題),但pack://app...可以工作,編譯和然后繼續安裝並在另一個應用程序中實例化(例如Excel中的VBA)...

BuildAction 必須Resource

幸運在嘗試克萊門斯的答案之前偶然地設置了這個選項,因為如果沒有,我會以為它只是行不通! 但是可以!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM