web-dev-qa-db-ja.com

Visual Studioプロジェクトのフォルダーの「リンクとして追加」

Visual Studioでは、「リンクとして追加」して、ソリューション内の別のプロジェクトのファイルにリンクを追加できます。

フォルダー全体に対してこれを行う方法はありますか?プロジェクトAのフォルダー全体がプロジェクトBに表示され、そのフォルダー内の新しいアイテムに手動でリンクする必要はありませんか?

119
kpozin

このように blogpost が述べられているように、それは可能です。

<ItemGroup>
    <Compile Include="any_abs_or_rel_path\**\*.*">
        <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
    </Compile>
</ItemGroup>

ただし、ファイルはコピーされないことに注意してください。

129
mo.

VS2012以降では、altキーを押してフォルダーを別のプロジェクトにドラッグできます。各ファイルをリンクとして手動で追加するのと同じですが、高速です。

upd:VS2013 update 2を使用している場合は Shared Projects を検討してください( Shared Project Reference Manager =)またはVS2015。

125
mt_serg

moからの回答 とMarcusからのコメントに1つ追加します。コンテンツアイテムをリンクする場合は、ファイル拡張子を含める必要があります。

<ItemGroup>
  <Compile Include="any_abs_or_rel_path\**\*.*">
    <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Compile>
</ItemGroup>
36
Chad

リンクされたフォルダーをIDEに表示する元のクエリの部分に関しては、これを実現することができます。そのため、ソリューションエクスプローラーのフォルダーには、すべてのファイルがルートの代わりに表示され、ソリューション。これを実現するには、次の追加が含まれます。

  <ItemGroup>
    <Compile Include="..\anypath\**\*.*">
      <Link>MyData\A\%(RecursiveDir)%(FileName)%(Extension)</Link>
    </Compile>
  </ItemGroup>

これには、MyDataというソリューションエクスプローラーの新しいフォルダーにあるリンクされたディレクトリのすべてのファイルが含まれます。上記のコードの「A」は何でも呼び出すことができますが、フォルダが表示されるためにはそこになければなりません。

22
Adam

フォルダーを参照として追加し、コンパイルしたくない場合は、次を使用します。

<Content Include="any_path\**\*.*">
  <Link>folder_in_B_project\%(RecursiveDir)%(FileName)%(Extension)</Link>
</Content>
7
Neshta

フォルダー全体に対して行う方法はありませんが、2つのプロジェクトが同じソリューション内にある場合、VSCommands 2010を使用して複数のファイルを同時にリンクとしてコピーできます。詳細については、このビデオを参照してください http://www.youtube.com/watch?v=fa1M0NGXqMg またはvisualstudiogallery.msdn.Microsoft.com/en-us/d491911d-97f3-4cf6-87b0にアクセス-6a2882120acf?lc = 1033

1
Registered User

シェルを破壊し、シンボリックリンクを追加します。

runas管理者

mklink /d LinkToDirectory DirectoryThatIsLinkedTo

BAMシンボリックリンク!

/ dはディレクトリリンクを指定します。

Vistaですぐに使用できます。 XPにバックポートできます。

ここのドキュメント: http://technet.Microsoft.com/en-us/library/cc753194%28WS.10%29.aspx

シンボリックリンクに慣れていない人にとっては、本質的には別のファイルまたはディレクトリへのポインタです。アプリケーションに対して透過的です。ディスク上の1つのコピー、それに対処するいくつかの方法。また、別のアドレスへのポインタではなく、同じファイルのNTFSの実際のファイルIDエントリである「ハードリンク」を作成することもできます。

注:コメントに記載されているように、これはシンボリックリンクを作成したコンピューターでのみ機能し、gitなどのバージョン管理システムでは機能しません。

0
John Vance