Visual Studio项目中文件夹的“添加为链接”

时间:2010-08-31 15:58:33

标签: visual-studio visual-studio-2010 projects-and-solutions

在Visual Studio中,我们可以“添加为链接”以添加指向解决方案中另一个项目中文件的链接。

有没有办法对整个文件夹执行此操作,以便项目A中的整个文件夹在项目B中可见,而无需手动链接到该文件夹​​中的新项目?

7 个答案:

答案 0 :(得分:124)

正如blogpost所述,这是可能的。

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

但请注意,文件不会被复制。

答案 1 :(得分:124)

在VS2012及更高版本中,您可以将文件夹拖动到另一个项目,同时按下 alt 键。这与将每个文件手动添加为链接但速度更快相同。

<强> UPD : 如果您使用的是VS2013更新2(使用Shared Projects)或VS2015,请考虑使用Shared Project Reference Manager

答案 2 :(得分:36)

the answer from mo.的一个补充以及Marcus的评论,如果您要关联内容项,则需要包含文件扩展名:

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

答案 3 :(得分:22)

关于原始查询中要在IDE中显示链接文件夹的部分,有可能实现此目的,因此解决方案资源管理器中有一个文件夹,其中包含所有链接文件,而不是出现在中的所有文件解决方案的根源。为实现这一目标,包括增加:

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

这将包含解决方案资源管理器中名为MyData的新文件夹中链接目录中的所有文件。上面代码中的“A”可以被调用,但必须在那里才能显示文件夹。

答案 4 :(得分:7)

如果您想添加一个文件夹作为参考,并且您不想编译它,请使用:

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

答案 5 :(得分:1)

对于整个文件夹无法执行此操作,但如果两个项目位于同一解决方案中,则可以使用VSCommands 2010同时将多个文件复制为链接。 有关详细信息,请参阅此视频http://www.youtube.com/watch?v=fa1M0NGXqMg或访问visualstudiogallery.msdn.microsoft.com/en-us/d491911d-97f3-4cf6-87b0-6a2882120acf?lc=1033

答案 6 :(得分:1)

将shell打包并添加符号链接。

runas Administrator然后

mklink /d LinkToDirectory DirectoryThatIsLinkedTo

BAM符号链接!

/ d指定目录链接。

在Vista中开箱即用。可以向后移植到XP。

此处的文档:http://technet.microsoft.com/en-us/library/cc753194%28WS.10%29.aspx

对于那些不熟悉符号链接的人来说,它本质上是指向另一个文件或目录的指针。它对应用程序是透明的。磁盘上有一个副本,有几种解决方法。您还可以创建一个“硬链接”,它不是指向另一个地址的指针,而是NTFS中用于同一文件的实际文件ID条目。

注意:如评论中所述,这只适用于您创建符号链接的计算机,而不适用于像git这样的版本控制系统。