Visual Studio: Добавить элемент / Добавить как ссылку, а не просто Добавить - PullRequest
18 голосов
/ 07 апреля 2010

Я новичок в визуальной студии из Delphi.

У меня есть дерево каталогов, полное файлов .cs (root \ Common).
У меня также есть дерево каталогов с приложениями (root is \ Applications)
Наконец, у меня есть дерево, полное сборок (root is \ Assemblies)

Я бы хотел сохранить мои файлы .cs в дереве Common, а всю среду voodoo (решения, проекты, настройки, метаданные, данные отладки, bin и т. Д.) В дереве Assmblies. Итак, для простого примера у меня есть сборка под названием PdMagic.Common.Math.dll. Решение и проект находятся в папке \ Assemblies \ Common \ Math. Все его исходные файлы (.cs) находятся в \ Common \ Math. (matrix.cs, trig.cs, mathtypes.cs, mathfuncs.cs, stats.cs и т. д.)

Когда я использую Добавить существующий элемент для добавления matrix.cs в свой проект, его копия добавляется в папку \ Assemblies \ Common \ Math. Я просто хочу сослаться на это. Я не хочу, чтобы несколько копий лежало вокруг. Я попытался добавить существующий элемент и использовал выпадающий список «Добавить ссылку», а не просто «Добавить», и это, похоже, делает то, что я хочу.

Вопрос: Какая «лучшая практика» для такого рода вещей? Большинство людей просто помещают эти файлы .cs в одну папку с проектом? Почему «Добавить ссылку» не используется по умолчанию?

Спасибо!

Ответы [ 7 ]

81 голосов
/ 19 марта 2012

Вы можете просто использовать Добавить как ссылку , нажав на маленькую стрелку вниз справа от кнопки добавления из Добавить -> Существующий элемент команда ...

(Thanks Peter)

Хотя я понимаю, что это не ответ на первоначальный вопрос (касающийся наилучшей практики), я представляю этот ответ, чтобы сэкономить время других, которые были направлены сюда в виде вводящего в заблуждение названия этого вопроса. *

12 голосов
/ 07 апреля 2010

«Лучшая практика» в этом случае - не бороться с инструментом. Он позволяет вам делать то, что вы хотите, но вы сделаете больше работы и сможете сосредоточиться на коде, если просто позволите IDE организовать ваш проект для вас.

Я бы создал пустой проект решения с именем PdMagic.Common

Это даст вам файловую структуру, такую ​​как

PdMagic.Common\
PdMagic.Common\PdMagic.Common.sln

тогда я обычно добавляю папку src и libs (через файловую систему, а не VS)

внутри папки libs, я бы разместил все сторонние зависимости, а в папке src были бы все мои проекты

PdMagic.Common\
PdMagic.Common\PdMagic.Common.sln
PdMagic.Common\libs
PdMagic.Common\libs\nunit
PdMagic.Common\src

Затем в Visual Studio я бы щелкнул правой кнопкой мыши на только что созданном решении и щелкнул «Добавить -> Новый проект», я бы указал, что я хочу, чтобы оно было создано в папке \ src, и назвал его PdMagic.Common. Math

Теперь моя структура папок будет выглядеть так:

PdMagic.Common\
PdMagic.Common\PdMagic.Common.sln
PdMagic.Common\libs
PdMagic.Common\libs\nunit
PdMagic.Common\src
PdMagic.Common\src\PdMagic.Common.Math
PdMagic.Common\src\PdMagic.Common.Math\PdMagic.Common.Math.csproj
PdMagic.Common\src\PdMagic.Common.Math\Class1.cs

Затем, когда вы добавляете классы в ваш проект PdMagic.Common.Math, они попадают в папку с файлом проекта. Вот как IDE считает, что мы должны работать, и я думаю, что большинство разработчиков согласны с этим, потому что попытка получить любой другой макет в файловой системе потребовала бы слишком много борьбы с IDE. Я знаю, что может быть трудно прийти к другому соглашению, и вы инстинктивно хотите такие же соглашения в новой среде. Однако, если вы будете придерживаться соглашений (по вашему мнению, правильно или неправильно), вы сделаете больше, потому что не будете пытаться заставить IDE делать то, что, как вы думаете, следует делать.

1 голос
/ 01 декабря 2011

Поскольку вы хотите ссылаться на matrix.cs в проекте, не просто используйте AddExistigItem, создайте новую ссылку на класс.

1 голос
/ 07 апреля 2010

Если вы хотите «ссылаться» на matrix.cs в своем проекте, не используйте Add Existing Item, создайте ссылку («Add Reference») на библиотеку классов или объект, частью которого является matrix.cs.Если вы не хотите (или не можете использовать) библиотеку или объект, частью которого является matrix.cs, то Add Link - это то, как вы бы к ней пришли, но серьезно я никогда не использовал эту особенность.

Ни один из разработчиков, с которыми я когда-либо работал в .NET, не изолировал свои файлы .cs в отдельных папках.Единственный вид разделения, подобный тому, который я видел в качестве практики, - это MVC, где модели, представления и контроллеры находятся в своих собственных папках.

1 голос
/ 07 апреля 2010

Я думаю, что «лучшая практика» состоит в том, чтобы объединить эти «общие» подпрограммы в сборку, на которую вы можете ссылаться, вместо того, чтобы тянуть исходные файлы в кучу разных проектов.Вы можете добавить его как предварительно созданную сборку с помощью «Добавить ссылку ...» или включить проект для этой сборки и добавить ссылку на проект (также это делается в диалоговом окне «Добавить ссылку ...»).

Это одна из тех вещей, которая кажется немного трудной для первоначальной настройки (и может быть), но, как правило, окупается в долгосрочной перспективе.

0 голосов
/ 22 июня 2011
0 голосов
/ 22 июня 2011

VS имеет несколько полезных расширений для этого:

http://vscommands.com

и ProjectsLinker: http://visualstudiogallery.msdn.microsoft.com/5e730577-d11c-4f2e-8e2b-cbb87f76c044?SRC=VSIDE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...