| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > using, подключение своего класса |
| Автор: Urvin 26.5.2010, 23:41 | ||||
| Порылся в гуглях и имеющейся литературе, никак не возьму в толк.. Пусть есть у меня проект в папке D:\CSharp\MyProject\MyProject.csproj Рядом с ним валяется настроечная шелуха и классы, принадлежащие к проекту. Я придумал свой класс MyClass:
Так как я подумал, что этот класс было бы неплохо использовать в различных проектах, я сохранил его в папку D:\CSharp\Common Вопрос: как подключить свой класс к своему проекту, да так чтобы он не копировался в папку с проектом (как происходит в меню Add->Existing)? Ведь если я усовершенствую исходный файл, то он не синхронизируется со сборкой и я как самый несчастный буду должен растиражировать этот файл на N проектов. В С++ я бы использовал конструкцию
Что сделать в C#? |
| Автор: Экскалупатор 27.5.2010, 07:25 |
| если добавляешь *.cs, то в свойствах этого файла(когда он уже в солюшен добавлен) выставь Copy Always(типа должен копировать каждый раз при открытии проекта новую копию, и работать с этой копией). а если добавляешь Dll то у него есть параметр Copy Local = True(по умолчанию), поставь в false и он не будет копироваться. |
| Автор: mihryak 27.5.2010, 11:06 |
| Экскалупатор, Copy Always копирует файл в output directory при билде, не думаю, что автор хочет этого Urvin, можно добавить файл во проекты как ссылку через Add Existing Item, только нажав не на Add, а на Add As Link из выпадающего списка кнопки только работать с ним будет не очень удобно, если подразумевается регулярная правка - при частых go to declaration студия будет ругаться, что тот же файл открыт другим проектом, ничего пагубного не несёт, но раздражает вообще, правильнее, конечно, насобирать кучку таких классов и сделать из них новую сборку common |
| Автор: Выхухоль 27.5.2010, 14:19 |
| мне кажется вы немного неправильно себе представляете структуры иерархии в С# все идет последовательно: 1.DLL или EXE (исполняемая сборка) 2.namespace, 3. class т.е. может быть одна сборка, и в ней куча namespace-ов, и для каждого namespace-а может быть куча классов просто по умолчанию как только вы создаете проект, название проекта становиться названием namespace. в c# в отличие от cpp работают со сборками классов (DLL, EXE) а не с их конечными исходниками (*.cs), конечно можно добавить исходник класса как было сказано выше -но это уже будет не красиво. К примеру, перед вами стоит задача разработки системы сайта +SQl Server. Я делаю обычно так: 1. создаю проект SQlToLinqDataContext - это у меня Data Layer для работы с базой данных 2. Создаю проект DLL сборку под названиеи к примеру BL - это у меня будет dll-ка которая содержит всю логику бизнес слоя (Bussnes layer) 3. ASP.NET веб проект под названием MySite. Который содержит конечные страницы для отображения пользователям. Потом я добавляю связки между сборками во всем Solution-е. т.е. добавляю в Reference у BL сцылку на DL, у ASP.NET проекта на BL и DL. (Как добавить связку от одного проекта к другому http://msdn.microsoft.com/ru-ru/library/wkze6zky%28VS.80%29.aspx) в итоге используя классы из BL сборки я в ASP.NET веб проекте обращаюсь к namespace-у под названием BL, а если хочу использовать Слой данных то пишу namescpace DL. и получаю доступ ко всем его данным классам. А можно сделать ваще легко, создать один проект ASP.NET веб, и в него добавлять вновь созданные классы такие как в BL. B и добавить новый ITem - LinqToSQlDataContext. и вс еэто дело будет у меня под одним namecoace-ом , namecoace-ом ASP.NET проекта. Но тогда если в последующих проектах, я зохочу использовать BL классы в новом проекте, мне придется брать их исходники из этого веб проекта и компилировать их в новом. |
| Автор: mihryak 27.5.2010, 19:03 |
| Выхухоль, добавление .cs файла через линк тоже имеет право на существование с этой фишкой можно, например, иметь лишь один файл с атрибутами сборки AssemblyInfo.cs (версия и проч.), что избавляет от необходимости править кучку файлов, боясь забыть один из них а так - да, код таким образом шарить в большинстве случаев не лучшая идея |
| Автор: jonie 27.5.2010, 22:02 | ||
|