Visual Studio 2012-Как добавить ссылку на файл в файл в том же проекте

когда я добавляю файл из другого проекта Visual Studio 2012 в мой текущий проект, используя опцию "Добавить как ссылку" в диалоговом окне "Добавить существующий элемент". Ссылка на файл прекрасно создана, и все в порядке.

когда я повторяю тот же трюк для существующего файла в то же самое проект VS2012 (но находится в другой папке) ссылка не будет создана. Visual Studio просто игнорирует действие. Почему это невозможно? Есть ли обходной путь для этого, поэтому я могу добавить ссылки на файлы в том же проекте?

Справочная информация: я хочу использовать пакеты NuGet и его механизм обновления, но NuGet просто сбрасывает все в структуру папок (например, папки "скрипты" и "содержимое"), которые я не хочу использовать. Я использую папку "libs" для внешних вещей. Но когда я перемещаю импортированные файлы NuGet, он нарушает механизм обновления, поэтому я хочу создать ссылки на файлы (ниже папки libs) в импортированные файлы, расположенные в папке "скрипты" и т. д.

Я уже пытался вручную редактировать .файл csproj, но определения ссылок по-прежнему игнорируются. Единственное решение, которое я могу придумать-это создать другой проект для пакетов NuGet и добавить ссылки на эти файлы в мой проект, но мне кажется немного перебор.

3 ответов


Это невозможно.

файл csproj-это просто файл msbuild, сообщающий процессу сборки, какие файлы и ссылки составляют проект и что делать с точки зрения сборки и т. д.

Если вы посмотрите, как собран файл csproj, вы заметите, что есть элементы ItemGroup. Одной из функций этих элементов ItemGroup является объединение файлов. В" группе файлов " каждый элемент (помеченный как Compile или None или что-то еще) ссылается на файл с атрибутом Include, например Include= " filename.доб." При добавлении файла в решение будет создан один из этих элементов с атрибутом Include, соответствующим пути к файлу относительно проекта. Прежде чем это сделать, он проверяет, находится ли файл с соответствующим путем уже в проекте, и игнорирует его, если это так.

Итак, вы видите, что вы пытаетесь добавить дубликат файла, а VS не позволяет что.

-- Edit--

теперь, что касается обхода. Если вы используете символическую ссылку, это можно сделать. В окне команды введите следующую команду:

mklink Link Target

где Link указывает новое имя символьной ссылки, а Target указывает путь (относительный или абсолютный), на который ссылается Новая ссылка.

затем вы сможете добавить файл в свой проект по мере необходимости.


Вы можете редактировать .файл csproj. Например, замените

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

by

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

новый путь будет скрыт в обозревателе решений, но он будет скопирован (протестирован в VS2015 CTP6)


Visual Studio не совместим с hardlinks и softlinks