web-dev-qa-db-ja.com

1つのソリューションでプロジェクト間で共有リソースファイルを使用するにはどうすればよいですか?

リソースファイルに問題があります。

2つのプロジェクトで解決策があります。最初のプロジェクトには、私が使用する画像を含むImageResource.resxファイルが含まれています。このプロジェクトのすべてのFormは、デザイナーからこのファイルにアクセスできます。しかし、デザイナーのImageResource.resxファイルで2番目のプロジェクトからそれを使用することがわかります(2番目のプロジェクトへの参照が存在します)。

2番目のプロジェクトへのリンクとしてImageResource.resxファイルを追加しました。そしてデザイナーで見ました!しかし、2番目のプロジェクトでこのリソースの画像を使用すると、Visual Studioによって元のファイルが変更されました(名前空間などが設定されます)ソリューションが壊れます。また、Visual Studioは、ImageResource.resxが2つのdllのfirst_project.dllsecond_project.dllに存在することを教えてくれます。

誰かが私を助けてくれますかプロジェクト間で共有リソースを正しく使用する方法は?

19
Yuriy
  1. リソースを共有する正しい方法は、グローバル共有プロジェクトを作成することです。 Resourcesという名前で新しいプロジェクトを作成します。

Solution Explorer, showing an example solution, which contains a project named *Resources*

  1. 次に、いくつかのリソース(アイコンなど)をプロジェクトに追加する必要があります。通常どおりこれを行います。プロジェクト設定に移動し、タブリソースおよび既存ファイルの追加…を選択しますプロジェクトに。アイコンがプロジェクトに追加され、ローカルフォルダーにコピーされたことがわかります。

For example, the Resources project's Resources tab shows a picture of a puppy, and the Solution Explorer shows that the Resources project's Resources folder includes the picture of the puppy

  1. 次のステップは、このアイコンを他のプロジェクトに追加することです。重要な違いに注意してください。このアイコンをlink!として追加する必要があります。

    リンクとして追加すると、リソースの重複を回避できます。同じソリューション内に新しいプロジェクトを作成し、名前を付けます。例: メイン。この新しいプロジェクトにいくつかのフォルダーを作成し、名前を付けますResources(この目的のための論理名)。次に、このフォルダーを右クリックし、既存のアイテムの追加…を選択して、共有プロジェクトフォルダーから画像ファイルを選択します。必ずリンクとして追加ここで使用してください!正しく実行されると、新しく追加されたファイルのアイコンはわずかに異なります(以下を参照)。

In the *Add Existing Item* dialog, choose the *Add As Link* option from the *Add* button's drop-down list

追加されたリソースのアイコンは次のようになります

In Solution Explorer, the Main project's icon for the puppy Resource has an arrow on the icon, whereas the Resources project's icon for the puppy Resource does not have an arrow on the icon

  1. ここで、このファイルのBuild ActionNoneに設定する必要があります。 -)。このためにファイルを選択し、プロパティウィンドウに移動します。 ビルドアクションにはなしを選択します。このアイコンがアセンブリに埋め込まれないようにするには、これを行う必要があります。

In Solution Explorer, change the *Main* project's puppy resource's properties. Choose a Build Action of *None*

  1. 最後に、リンクされたファイルを対応するプロジェクトのResourcesに追加する必要があります。ファイルを追加したプロジェクトのプロジェクトプロパティを開きます。 Resourceタブを選択し、リンクされたファイルをそこにドラッグします。

Drag the linked image from the Solution Explorer's *Main* project's resources to the *Main* project's resources tab's viewing pane

これらは、プロジェクト間でアイコンを共有するために実行する必要がある5つの簡単な手順です。 「これの利点は何ですか?」と尋ねるかもしれません。利点は次のとおりです。

  • リソースを1か所に保存し、
  • アイコンを新しいものに置き換えるのは簡単です。
33
Yuriy

これは私にはうまくいきませんでした、そして私は別の(VS2015 +)アプローチを見つけました。 https://stackoverflow.com/a/45471284/4151626 を参照してください

つまり、共有プロジェクトは周辺プロジェクトに直接含まれます。したがって、IDEは共有プロジェクトの<Resource>要素をサポートしていませんが。<Resource>要素はテキストエディタを介して共有プロジェクトに追加できます。その後、ビルド中に周辺プロジェクトに組み込まれます。

(ハイパーリンクについてお詫びします。わかりやすくするために回答を再投稿しますが、stackoverflowエディターはこれを取り締まり、重複する回答を削除して???から救います。)

2
ergohack

シンボリックリンクを使用してファイルを複数のフォルダーに共有できますか?

ウィンドウズ:

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.
1
Preet Sangha

リソースファイルが実際にプロジェクト間で共有されている場合は、共有プロジェクトに配置する必要があります。

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

publicでない場合、リソースは表示されません。デフォルトでは「Friend」に設定されています。 「アクセス修飾子」は、ビジュアルデザイナ(右上隅)で設定できます。

0
Eystein Bye