【发布时间】:2010-08-31 15:58:33
【问题描述】:
在 Visual Studio 中,我们可以“添加为链接”来添加指向解决方案中另一个项目中的文件的链接。
有没有办法对整个文件夹执行此操作,以便项目 A 中的整个文件夹在项目 B 中可见,而无需手动链接到该文件夹中的新项目?
【问题讨论】:
标签: visual-studio visual-studio-2010 projects-and-solutions
在 Visual Studio 中,我们可以“添加为链接”来添加指向解决方案中另一个项目中的文件的链接。
有没有办法对整个文件夹执行此操作,以便项目 A 中的整个文件夹在项目 B 中可见,而无需手动链接到该文件夹中的新项目?
【问题讨论】:
标签: visual-studio visual-studio-2010 projects-and-solutions
正如blogpost 所说,这是可能的。
<ItemGroup>
<Compile Include="any_abs_or_rel_path\**\*.*">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
</Compile>
</ItemGroup>
但请注意,文件不会被复制。
【讨论】:
<Content ...>,并添加<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> 以使Visual Studio 在构建时复制资源。
<None>...</None> 而不是<Compile>...</Compile>。但我认为,无论如何它都会复制这些文件。甚至 VisualStudio 也可以使用链接文件。
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link> 来防止它从文件名中删除扩展名。
在 VS2012 及更高版本中,您可以按住 alt 键将文件夹拖到另一个项目中。这与手动将每个文件添加为链接相同,但速度更快。
更新: 如果您使用的是 VS2013 更新 2(使用 Shared Project Reference Manager)或 VS2015,请考虑使用 Shared Projects。
【讨论】:
除了the answer from mo. 和 Marcus 的评论之外,如果您要链接内容项,则需要包含文件扩展名:
<ItemGroup>
<Compile Include="any_abs_or_rel_path\**\*.*">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Compile>
</ItemGroup>
【讨论】:
<Compile ...。就我而言,我需要将.ts 文件引用到我的新项目中。它是如何完成的。谢谢!
关于在 IDE 中出现链接文件夹的原始查询部分,有可能实现这一点,因此解决方案资源管理器中有一个文件夹,其中包含所有链接文件,而不是所有文件都出现在解决方案的根源。为此,请添加以下内容:
<ItemGroup>
<Compile Include="..\anypath\**\*.*">
<Link>MyData\A\%(RecursiveDir)%(FileName)%(Extension)</Link>
</Compile>
</ItemGroup>
这会将链接目录中的所有文件包含在解决方案资源管理器中名为 MyData 的新文件夹中。上面代码中的“A”可以被称为任何东西,但必须存在才能显示文件夹。
【讨论】:
如果你想添加一个文件夹作为参考并且你不想编译它,使用:
<Content Include="any_path\**\*.*">
<Link>folder_in_B_project\%(RecursiveDir)%(FileName)%(Extension)</Link>
</Content>
【讨论】:
破壳而出并添加一个符号链接。
runas 管理员然后
mklink /d LinkToDirectory DirectoryThatIsLinkedTo
BAM 符号链接!
/d 指定目录链接。
在 Vista 中开箱即用。可以向后移植到 XP。
此处的文档:http://technet.microsoft.com/en-us/library/cc753194%28WS.10%29.aspx
对于那些不熟悉符号链接的人来说,它本质上是一个指向另一个文件或目录的指针。它对应用程序是透明的。磁盘上的一份副本,有几种解决方法。您还可以创建一个“硬链接”,它不是指向另一个地址的指针,而是 NTFS 中同一文件的实际文件 ID 条目。
注意:如 cmets 中所述,这仅适用于您创建符号链接的计算机,并且不适用于 git 等版本控制系统。
【讨论】: