在Visual Studio中,我们可以“添加为链接”以添加指向解决方案中另一个项目中文件的链接。
有没有办法对整个文件夹执行此操作,以便项目A中的整个文件夹在项目B中可见,而无需手动链接到该文件夹中的新项目?
答案 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这样的版本控制系统。