簡體   English   中英

如何在一個解決方案中的項目之間使用共享資源文件?

[英]How to use shared resource file between projects in one solution?

我的資源文件有問題。

我有兩個項目的解決方案。 第一個項目包含ImageResource.resx文件,其中包含我使用的圖像。 此項目中的每個Form都可以從設計器訪問此文件。 但我可以在設計器ImageResource.resx文件中看到從第二個項目中使用它( 引用第二個項目 )。

我已將ImageResource.resx文件添加為第二個項目的鏈接。 我在設計師看到了它! 但是當我在第二個項目中使用來自此資源的圖像時,Visual Studio修改了我的原始文件(它設置名稱空間,以及其他...) ,我的解決方案中斷了。 Visual Studio還告訴我, ImageResource.resx存在於兩個dll的first_project.dllsecond_project.dll

任何人都可以幫助我如何在項目之間正確使用共享資源?

  1. 共享資源的正確方法是創建全局共享項目。 創建一個名為Resources的新項目:

解決方案資源管理器,顯示示例解決方案,其中包含名為* Resources *的項目

  1. 接下來,我們必須向項目添加一些資源(例如圖標)。 像往常一樣這樣做。 轉到項目設置,選擇選項卡資源添加現有文件...到項目。 我們可以看到該圖標已添加到項目中並被復制到本地文件夾:

例如,Resources項目的Resources選項卡顯示了一只小狗的圖片,Solution Explorer顯示Resources項目的Resources文件夾包含了小狗的圖片

  1. 下一步包括將此圖標添加到其他項目。 注意重要的區別,你需要添加這個圖標作為鏈接

    添加為鏈接可避免資源重復。 在同一解決方案中創建一個新項目,並將其命名為Main 在這個新項目中創建一個文件夾,命名為Resources (我們的邏輯名稱)。 然后右鍵單擊此文件夾,選擇Add Existing Item ...並從共享項目文件夾中選擇圖像文件。 請務必在此處使用添加鏈接 如果正確完成,新添加文件的圖標將略有不同(見下文):

在* Add Existing Item *對話框中,從* Add *按鈕的下拉列表中選擇* Add As Link *選項

添加的資源圖標必須如下所示

在解決方案資源管理器中,小狗資源的主項目圖標在圖標上有一個箭頭,而資源項目的小狗資源圖標在圖標上沒有箭頭

  1. 現在我們必須將此文件的Build Action設置為None 為此,請選擇文件並轉到“ 屬性”窗口。 對於Build Action,選擇None 我們需要這樣做以避免將此圖標嵌入到程序集中:

在解決方案資源管理器中,更改* Main *項目的puppy資源的屬性。選擇*無*的構建操作

  1. 最后,我們需要將鏈接文件添加到相應項目的Resources中。 打開我們剛剛添加文件的項目的項目屬性 選擇Resource選項卡並將鏈接文件拖到那里:

將鏈接圖像從解決方案資源管理器的* Main *項目資源拖動到* Main *項目的資源選項卡的查看窗格

這些是在項目之間共享圖標必須執行的五個簡單步驟。 你可能會問“這有什么好處?” 好處是:

  • 我們將資源存儲在一個地方,並且
  • 用新圖標替換圖標很容易。

這對我不起作用,我找到了另一種(VS2015 +)方法。 請參閱https://stackoverflow.com/a/45471284/4151626

簡而言之,共享項目直接包含在外圍項目中。 因此,即使IDE不支持共享項目中的<Resource>元素。 可以通過文本編輯器將<Resource>元素添加到共享項目中。 然后在構建期間將它們合並到外圍項目中。

您可以使用符號鏈接將文件共享到多個文件夾中嗎?

視窗:

mklink linked_location\ImageResource.resx original_location\ImageResource.resx


C:\Users\preet>mklink
Creates a symbolic link.

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      Creates a directory symbolic link.  Default is a file
                symbolic link.
        /H      Creates a hard link instead of a symbolic link.
        /J      Creates a Directory Junction.
        Link    specifies the new symbolic link name.
        Target  specifies the path (relative or absolute) that the new link
                refers to.

如果資源文件確實在項目之間共享,則應將其放在共享項目中。

Solution 'Sample'
   Project Sample.Data
   Project Sample.Business
   Project Sample.UI
   Project Sample.Resource   //shared resources are put in a shared project  

如果資源不公開 ,則無法查看該資源,並且默認設置為“朋友”。 您可以在可視設計器(右上角)中設置“訪問修改器”。

暫無
暫無

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

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