2017-02-14 5 views
0

Каковы практические последствия добавления обычного проекта (приложение WPF, приложение Windows Forms и т. Д.) Против общего проекта в качестве ссылки в Visual Studio 2015 ?Различия между проектом «Добавить ссылку ...» и общим проектом

Я знаю, что общие проекты являются довольно новыми (начиная с VS 2013) и, по-видимому, превосходной функцией, поэтому я хотел бы знать все различия.

Может ли разница в том, что файлы в общем проекте могут использовать код из проектов, в которых общий проект добавляется в качестве ссылки, если все этих проектов имеют код, который будет использоваться? Это, конечно, невозможно в обычном проекте.

Также по какой-то причине Visual Studio показывает мне гораздо меньше предложений, если я делаю «Добавить -> Новый элемент ...» в общий проект.

+0

Мое понимание заключается в том, что совместно используемый проект позволяет совместно использовать общий код между другими не связанными проектами. Т.е. если бы у вас была структура 'MyStruct', которая по какой-то причине была бы такой же, как в обеих, вам не нужно копировать ее в оба. Нет общей скомпилированной dll, которую оба проекта разделяют. Вместо этого код «копируется» в каждый отдельный проект. Вы получите две различные структуры: «Project1.MyStruct» и «Project2.MyStruct», которые в то время как одинаковые были бы разными. Типы – pinkfloydx33

+0

@ pinkfloydx33 Да, но это также происходит с обычным проектом (приложение WPF, приложение Windows Forms) как ссылка, не так ли? – user2586856

+0

Нет, потому что они скомпилированы в сборку (либо exe, либо dll), и на нее ссылаются. Общий проект копирует сам код, тогда как другой случай использует сборки напрямую. См. Дубликат, который я связал. – pinkfloydx33

ответ

1

Как итог различий, найденных до сих пор (возьмите это с солью, поскольку я не эксперт):

Общие проекты и обычные проекты (библиотека классов, приложение WPF, приложения Windows Forms и т. д.) добавлены как ссылка:

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

  • Общие проекты имеют меньше предложений, когда «Добавить -> Новый элемент ...», поскольку они более общие.

  • Общие проекты не скомпилированы в .dll или .exe, но добавлены с исходным кодом к проекту, ссылающемуся на них, и поэтому можно отлаживать шаг за шагом.

0

Проект, предполагающий библиотеку классов, будет скомпилирован, а на dll будет ссылаться другой проект. Совместные проекты представляют собой причудливый способ связывания файлов (или копировать вставку файла кода при компиляции). У этого есть преимущества, так как у вас есть исходный код доступа, который не только в совместном проекте, но и в целевом проекте (поскольку он работает для всех проектов, на которые делается ссылка). Но также могут давать конфликты, если вы используете это в библиотеке, на которую также будут ссылаться ваши целевые проекты. Я думаю, что вам лучше всего пойти на обычную библиотеку классов и использовать только совместный проект, если вы действительно уверены, что вам нужно (был введен для улучшения обмена кодами между вашим приложением win8.1 и wp8.1)

+0

Я не говорю о библиотеке классов, но обычный не скомпилированный проект (например, приложение WPF, приложение Windows Forms и т. Д.) – user2586856