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

标签 visual-studio-2012 nuget nuget-package

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

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

背景信息:我想使用 NuGet 包及其更新机制,但 NuGet 只是将所有内容转储到我不想使用的文件夹结构(如“脚本”和“内容”文件夹)中。我使用“libs”文件夹来存放外部内容。但是当我移动 NuGet 导入的文件时,它会破坏更新机制,所以我想创建文件链接(在 libs 文件夹下面)到位于“脚本”文件夹等中的导入文件。

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

最佳答案

这是不可能的。

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

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

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

- 编辑 -

现在,至于解决方法。如果您要使用符号链接(symbolic link),则可以这样做。在命令窗口中,键入以下命令:

mklink Link Target

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

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

关于visual-studio-2012 - Visual Studio 2012 - 如何将文件链接添加到同一项目中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15289743/

相关文章:

c# - VS2012 模板向导 - GUI 未显示

c# - 如何使用 OpenXML 包自动调整 excel 列

visual-studio - 如果多个文件具有相同的名称,Visual Studio 断点会在错误的源文件(或同时多个文件)中中断

c# - 如何在 dotnet pack nuget 包中包含来自构建输出 (dacpac) 的非 dll 文件?

visual-studio - 如何在最新版本的 VSTS 中添加 Nuget 包徽章

c# - 同一解决方案中两个不同项目的相同 Nuget 包

c# - 调试时变量在当前上下文中不存在

azure-devops - 无法加载文件或程序集“Microsoft.Data.SqlClient”

xamarin - 将库导入 xamarin

c# - 在一个包含两个项目的解决方案文件中安装不同版本的 nuget 包