【问题标题】:Visual Studio 2012 - How to add a file link to a file in the same projectVisual Studio 2012 - 如何将文件链接添加到同一项目中的文件
【发布时间】:2013-03-08 08:34:31
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: visual-studio-2012 nuget nuget-package


    【解决方案1】:

    这是不可能的。

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

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

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

    --编辑--

    现在,作为一种解决方法。如果您要使用符号链接,则可以这样做。在命令窗口中,键入以下命令:

    mklink Link Target
    

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

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

    【讨论】:

    • 一个明确的答案。谢谢你。我希望有一天他们会添加这样的功能。类似于 Linux 符号链接之类的。
    • 好吧,现在你提到它,符号链接确实存在于 Windows 中,所以我将发布一个答案,详细说明如何实现这一点
    • 看起来不错。 @CarllDev 你测试了吗?
    • 是的。 Visual Studio 认为它是一个不同的文件,因为路径不同。您可以通过这种方式链接整个文件夹,它不会更好
    【解决方案2】:

    您可以编辑 .csproj 文件。 例如,替换

    <Content Include="fonts\fontawesome-webfont.woff" />
    

    <Content Include="fonts\fontawesome-webfont.woff" >
       <Link>newPath\fonts\fontawesome-webfont.woff</Link>
    </Content>
    

    新路径会隐藏在解决方案资源管理器中,但会被复制(在VS2015 CTP6中测试)

    【讨论】:

      【解决方案3】:

      Visual Studio 与硬链接和软链接不兼容

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-20
        • 1970-01-01
        • 1970-01-01
        • 2012-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多