"Добавить как ссылку" для папок в проектах Visual Studio

В Visual Studio мы можем "Добавить как ссылку", чтобы добавить ссылку на файл в другом проекте в решении.

Есть ли способ сделать это для целых папок, чтобы целая папка в проекте A была видна в проекте B, без необходимости вручную ссылаться на новые элементы в этой папке?

116
31 авг. '10 в 18:58
источник поделиться
7 ответов

Как говорится в этом посте, это возможно.

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

Но имейте в виду, что файлы не будут скопированы.

123
28 февр. '12 в 19:42
источник

Связанные вопросы


Похожие вопросы

В VS2012 и более поздних версиях вы можете перетащить папку в другой проект с нажатой клавишей alt. Это точно так же, как добавление каждого файла в качестве ссылки вручную, но быстрее.

обн: Рассмотрите возможность использования общих проектов, если вы используете обновление VS2013 2 (с общим диспетчером проектов) или VS2015.

123
14 марта '13 в 11:57
источник

Одно дополнение к ответу от мес. и комментарий от Маркуса, если вы связываете элементы контента, вам нужно будет указать расширение файла:

<ItemGroup>
  <Compile Include="any_abs_or_rel_path\**\*.*">
    <Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Compile>
</ItemGroup>
36
12 янв. '13 в 20:54
источник

Относительно части исходного запроса, чтобы связанная папка отображалась в среде IDE, можно сделать это, поэтому в обозревателе решений есть папка со всеми связанными файлами внутри, а не все файлы, появляющиеся в корень решения. Для этого необходимо добавить:

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

Это будет включать все файлы из связанного каталога в новой папке в проводнике решений MyData. "A" в приведенном выше коде можно назвать чем угодно, но должен быть там, чтобы папка появилась.

22
14 янв. '13 в 10:55
источник

Если вы хотите добавить папку в качестве ссылки, и вы не хотите ее компилировать, используйте:

<Content Include="any_path\**\*.*">
  <Link>folder_in_B_project\%(RecursiveDir)%(FileName)%(Extension)</Link>
</Content>
7
13 февр. '15 в 16:48
источник

Разрушьте раковину и добавьте символическую ссылку.

Руна Администратор тогда

mklink /d LinkToDirectory DirectoryThatIsLinkedTo

БАМ символическая ссылка!

/d указывает ссылку на каталог.

Работает в Vista "из коробки". Может быть перенесен в XP.

Документация здесь: http://technet.microsoft.com/en-us/library/cc753194%28WS.10%29.aspx

Для тех, кто не знаком с символическими ссылками, это, по сути, указатель на другой файл или каталог. Это прозрачно для приложений. Одна копия на диске, несколько способов ее устранения. Вы также можете создать "жесткую ссылку", которая является не указателем на другой адрес, а действительной записью идентификатора файла в NTFS для того же файла.

ПРИМЕЧАНИЕ: как указано в комментариях, это будет работать только на компьютере, где вы создали символическую ссылку, и не будет работать в системе контроля версий, такой как git.

1
21 февр. '14 в 1:22
источник

Невозможно сделать это для целых папок, но если два проекта находятся в одном решении, вы можете использовать VSCommands 2010 для одновременного копирования нескольких файлов в виде ссылок. см. это видео для получения дополнительной информации http://www.youtube.com/watch?v=fa1M0NGXqMg или перейдите на visualstudiogallery.msdn.microsoft.com/en-us/d491911d-97f3-4cf6- 87b0-6a2882120acf? ЖХ = 1033

1
31 авг. '10 в 19:33
источник

Посмотрите другие вопросы по меткам или Задайте вопрос