Visual Studio 2012 - 如何将文件链接添加到同一项目中的文件

Maa*_*ter 6 nuget nuget-package visual-studio-2012

当我使用"添加现有项"对话框中的"添加为链接"选项将另一个Visual Studio 2012项目中的文件添加到当前项目时.文件链接很好地创建,一切都很好.

当我对同一 VS2012项目中的现有文件重复相同的技巧(但位于另一个文件夹中)时,将不会创建链接.Visual Studio只是忽略了该操作.为什么这不可能?有没有解决方法,所以我可以添加文件链接到同一项目中的文件?

背景信息:我想使用NuGet包及其更新机制,但NuGet只是将所有内容转储到文件夹结构中(比如'Scripts'和'Content'文件夹),我不想使用它们.我使用'libs'文件夹作为外部资料.但是当我移动NuGet导入的文件时,它会破坏更新机制,所以我想创建文件链接(在libs文件夹下面)到位于'Scripts'文件夹中的导入文件等.

我已经尝试手动编辑.csproj文件,但仍然忽略了链接定义.我能想到的唯一解决方案是为NuGet包创建另一个项目,并在我的其他项目中添加指向那些导入文件的链接,但在我看来这有点过分.

Car*_*Dev 3

这不可能。

csproj 文件只是一个 msbuild 文件,告诉构建过程哪些文件和引用组成了项目以及在构建等方面要做什么。

如果您查看 csproj 文件的组合方式,您会注意到存在 ItemGroup 元素。这些 ItemGroup 元素的功能之一是将文件分组在一起。在“文件组”中,每个项目(无论标记为“编译”还是“无”或其他)都引用具有 Include 属性的文件,例如 Include="filename.ext"。当您将文件添加到解决方案时,它将创建这些元素之一,并将 Include 属性适当设置为文件相对于项目的路径。但在此之前,它会检查项目中是否已存在具有匹配路径的文件,如果存在则忽略它。

所以你看,你想要做的是添加一个重复的文件,而 VS 不允许这样做。

- 编辑 -

现在,至于解决方法。如果您要使用符号链接,则可以完成此操作。在命令窗口中,键入以下命令:

mklink Link Target
Run Code Online (Sandbox Code Playgroud)

其中 Link 指定新的符号链接名称,Target 指定新链接引用的路径(相对或绝对)。

然后您应该能够根据需要将该文件添加到您的项目中。

  • 是的。Visual Studio 认为这是一个不同的文件,因为路径不同。您可以通过这种方式链接整个文件夹,但它不会知道更好 (2认同)