Вопрос

У меня есть три проекта в моем решении .NET.
Главный проект и два классовых библиотечных проектов.

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

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

1) Проект ГЛАВНЫЙ Содержит ссылки на Библиотека-альфа а также Библиотека-бета

2) Проект Библиотека-альфа Содержит ссылки на Библиотека-бета

3) Проект Библиотека-бета Содержит ссылки на Библиотека-альфа

Тогда нет. Visual Studio не сможет построить ГЛАВНЫЙ Пока это не строит АЛЬФА а также БЕТА. Анкет Он не сможет построить АЛЬФА Пока это не строит БЕТА. Анкет И это не сможет построить БЕТА Пока это не строит АЛЬФА. Анкет Поэтому он не сможет что -либо построить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top