Перекрестные ссылки на сборки - PullRequest
4 голосов
/ 03 января 2011

У меня есть три проекта в моем решении .net.
Основной проект и два проекта библиотеки классов.

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

Ответы [ 4 ]

3 голосов
/ 03 января 2011

Циркулярные ссылки возможны возможны (через командную строку и некоторые трюки; не через IDE), но представляют собой серьезную проблему; не делай этого!

Либо добавьте сборку extra для общих типов, либо объедините две библиотеки.

Во многих отношениях проще - меньше ... Множество DLL не означает, что вы достигли чистоты - это просто беспорядок.

3 голосов
/ 03 января 2011

IDE не позволит вам, когда проекты находятся в одном решении. Есть тонкие способы запутать это. Но тогда решение не может быть построено с нуля (то есть Build + Rebuild), так как ссылка на сборку еще не доступна. Измените это, возможно, вам нужна третья сборка, на которую могут ссылаться обе.

2 голосов
/ 03 января 2011

Когда я столкнулся с этой проблемой, у меня есть созданные классы, которые имеют только свойства. Может быть Employee, Customer, Product, что угодно. Эти классы не должны ссылаться на какой-либо другой проект, поэтому несколько проектов могут ссылаться на них.

Методы, принадлежащие этим объектам (Employee, Customer, Product), затем переходят в свои собственные классы в других проектах.

Одна ситуация, с которой я часто сталкивался, - это трехуровневое приложение - уровень представления, бизнес-уровень и уровень доступа к данным. Я хочу, чтобы DAL извлекал данные и заполнял объект Employee, который возвращается в BLL. Если класс Employee находится в BLL и имеет как свойства, так и методы, то нет простого способа заполнить объект Employee в DAL и вернуть его в BLL - потому что BLL должен иметь ссылку на DAL, поэтому DAL, в свою очередь, не может ссылаться на BLL. Создание отдельного проекта с классами только для свойств (Employee, Customer, Product) является одним из способов решения этой проблемы.

1 голос
/ 03 января 2011

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

1) Проект MAIN содержит ссылки на LIBRARY-ALPHA и БИБЛИОТЕКА-БЕТА

2) Проект БИБЛИОТЕКА-АЛЬФА содержит ссылки на БИБЛИОТЕКА-БЕТА

3) Проект LIBRARY-BETA содержит ссылки на LIBRARY-ALPHA

, затем no.Visual Studio не сможет собрать MAIN , пока не будет построено ALPHA и BETA .Он не сможет построить ALPHA , пока не построит BETA .И он не сможет построить BETA , пока не соберет ALPHA .Поэтому он не сможет ничего построить.

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