Ответы:
Как сказано в этом блоге , это возможно.
<ItemGroup>
<Compile Include="any_abs_or_rel_path\**\*.*">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
</Compile>
</ItemGroup>
Но учтите, файлы копироваться не будут.
<None>...</None>
вместо <Compile>...</Compile>
. Но я думаю, что он все равно скопирует эти файлы. Даже VisualStudio делает это со связанными файлами.
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
чтобы предотвратить удаление расширений из имен файлов.
В VS2012 и более поздних версиях вы можете перетащить папку в другой проект с нажатой клавишей alt . Это то же самое, что и добавление каждого файла в виде ссылки вручную, но быстрее.
upd : рассмотрите возможность использования общих проектов, если вы используете обновление 2 VS2013 (с диспетчером ссылок на общие проекты ) или VS2015.
Одно дополнение к ответу от мес. и комментарий Маркуса, если вы связываете элементы контента, вам нужно будет указать расширение файла:
<ItemGroup>
<Compile Include="any_abs_or_rel_path\**\*.*">
<Link>%(RecursiveDir)%(FileName)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Compile>
</ItemGroup>
<Compile ...
в этом. В моем случае мне нужно направить .ts
файлы в мой новый проект. как это сделано. Спасибо!
Что касается части исходного запроса, чтобы связанная папка отображалась в среде IDE, этого можно добиться, поэтому в проводнике решений есть папка со всеми связанными файлами внутри, вместо всех файлов, появляющихся в корне решение. Для этого нужно добавить:
<ItemGroup>
<Compile Include="..\anypath\**\*.*">
<Link>MyData\A\%(RecursiveDir)%(FileName)%(Extension)</Link>
</Compile>
</ItemGroup>
Это будет включать все файлы из связанного каталога в новую папку в проводнике решений под названием MyData. Букву «А» в приведенном выше коде можно назвать как угодно, но она должна быть там, чтобы папка появилась.
Выньте оболочку и добавьте символическую ссылку.
runas Administrator, затем
mklink /d LinkToDirectory DirectoryThatIsLinkedTo
БАМ символическая ссылка!
/ d указывает ссылку на каталог.
Работает в Vista "из коробки". Может быть перенесен на XP.
Документация здесь: http://technet.microsoft.com/en-us/library/cc753194%28WS.10%29.aspx
Для тех, кто не знаком с символическими ссылками, это, по сути, указатель на другой файл или каталог. Это прозрачно для приложений. Одна копия на диске, несколько способов ее устранения. Вы также можете создать «жесткую ссылку», которая является не указателем на другой адрес, а фактической записью идентификатора файла в NTFS для того же файла.
ПРИМЕЧАНИЕ: как указано в комментариях, это будет работать только на компьютере, на котором вы создали символическую ссылку, и не будет работать в системе контроля версий, такой как git.
<Content ...>
и добавить,<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
чтобы Visual Studio скопировала ресурсы при сборке.