“Add as Link” for folders in Visual Studio projects

前端 未结 6 685
终归单人心
终归单人心 2020-12-04 05:20

In Visual Studio, we can \"Add as link\" to add a link to a file in another project in the solution.

Is there any way to do this for entire folders, so that an entir

相关标签:
6条回答
  • 2020-12-04 06:02

    As this blogpost stated, it is possible.

    <ItemGroup>
        <Compile Include="any_abs_or_rel_path\**\*.*">
            <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
        </Compile>
    </ItemGroup>
    

    But be aware, the files will not be copied.

    0 讨论(0)
  • 2020-12-04 06:05

    If you want to add a folder as a reference and you don't want to compile it, use:

    <Content Include="any_path\**\*.*">
      <Link>folder_in_B_project\%(RecursiveDir)%(FileName)%(Extension)</Link>
    </Content>
    
    0 讨论(0)
  • 2020-12-04 06:06

    Regarding the part of the original query to have a linked folder appear in the IDE, it is kind of possible to achieve this so there is a folder in the solution explorer with all linked files inside, instead of all the files appearing in the root of the solution. To achieve this, include the addition:

      <ItemGroup>
        <Compile Include="..\anypath\**\*.*">
          <Link>MyData\A\%(RecursiveDir)%(FileName)%(Extension)</Link>
        </Compile>
      </ItemGroup>
    

    This will include all files from the linked directory in a new folder in the solution explorer called MyData. The 'A' in the code above can be called anything but must be there in order for the folder to appear.

    0 讨论(0)
  • 2020-12-04 06:15

    Bust out the shell and add a symbolic link.

    runas Administrator then

    mklink /d LinkToDirectory DirectoryThatIsLinkedTo
    

    BAM symbolic link!

    /d specifies directory link.

    Works in Vista on up out of the box. Can be backported to XP.

    Documentation here: http://technet.microsoft.com/en-us/library/cc753194%28WS.10%29.aspx

    For those not familiar with symbolic links, it's essentially a pointer to another file or directory. It's transparent to applications. One copy on disk, several ways to address it. You can also make a "hard link" which is not a pointer to another address, but an actual file ID entry in NTFS for the same file.

    NOTE: as stated in the comments, this would only work on the computer where you created the symlink and wouldn't work in a Version Control System like git.

    0 讨论(0)
  • 2020-12-04 06:21

    One addition to the answer from mo. and the comment from Marcus, if you are linking content items you will need to include the file extension:

    <ItemGroup>
      <Compile Include="any_abs_or_rel_path\**\*.*">
        <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
        <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      </Compile>
    </ItemGroup>
    
    0 讨论(0)
  • 2020-12-04 06:25

    In VS2012 and later, you can drag a folder to another project with alt key pressed. It's just the same as adding each file as link manually but faster.

    upd: Consider using Shared Projects if you are using VS2013 update 2 (with Shared Project Reference Manager) or VS2015.

    0 讨论(0)
提交回复
热议问题