![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Urvin |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 1.6.2006 Репутация: нет Всего: нет |
Порылся в гуглях и имеющейся литературе, никак не возьму в толк..
Пусть есть у меня проект в папке D:\CSharp\MyProject\MyProject.csproj Рядом с ним валяется настроечная шелуха и классы, принадлежащие к проекту. Я придумал свой класс MyClass:
Так как я подумал, что этот класс было бы неплохо использовать в различных проектах, я сохранил его в папку D:\CSharp\Common Вопрос: как подключить свой класс к своему проекту, да так чтобы он не копировался в папку с проектом (как происходит в меню Add->Existing)? Ведь если я усовершенствую исходный файл, то он не синхронизируется со сборкой и я как самый несчастный буду должен растиражировать этот файл на N проектов. В С++ я бы использовал конструкцию
Что сделать в C#? Это сообщение отредактировал(а) Urvin - 26.5.2010, 23:42 |
||||
|
|||||
Экскалупатор |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1746 Регистрация: 1.4.2009 Где: г. Минск Репутация: 11 Всего: 24 |
если добавляешь *.cs, то в свойствах этого файла(когда он уже в солюшен добавлен) выставь Copy Always(типа должен копировать каждый раз при открытии проекта новую копию, и работать с этой копией).
а если добавляешь Dll то у него есть параметр Copy Local = True(по умолчанию), поставь в false и он не будет копироваться. Это сообщение отредактировал(а) Экскалупатор - 27.5.2010, 07:37 |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
Экскалупатор, Copy Always копирует файл в output directory при билде, не думаю, что автор хочет этого
Urvin, можно добавить файл во проекты как ссылку через Add Existing Item, только нажав не на Add, а на Add As Link из выпадающего списка кнопки только работать с ним будет не очень удобно, если подразумевается регулярная правка - при частых go to declaration студия будет ругаться, что тот же файл открыт другим проектом, ничего пагубного не несёт, но раздражает вообще, правильнее, конечно, насобирать кучку таких классов и сделать из них новую сборку common |
|||
|
||||
Выхухоль |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 9.10.2008 Где: Ташкент Репутация: нет Всего: 2 |
мне кажется вы немного неправильно себе представляете структуры иерархии в С#
все идет последовательно: 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. (Как добавить связку от одного проекта к другому HOW TO: Add Reference to Solution) в итоге используя классы из BL сборки я в ASP.NET веб проекте обращаюсь к namespace-у под названием BL, а если хочу использовать Слой данных то пишу namescpace DL. и получаю доступ ко всем его данным классам. А можно сделать ваще легко, создать один проект ASP.NET веб, и в него добавлять вновь созданные классы такие как в BL. B и добавить новый ITem - LinqToSQlDataContext. и вс еэто дело будет у меня под одним namecoace-ом , namecoace-ом ASP.NET проекта. Но тогда если в последующих проектах, я зохочу использовать BL классы в новом проекте, мне придется брать их исходники из этого веб проекта и компилировать их в новом. |
|||
|
||||
mihryak |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 731 Регистрация: 28.4.2007 Где: С-Пб Репутация: 19 Всего: 36 |
Выхухоль, добавление .cs файла через линк тоже имеет право на существование
с этой фишкой можно, например, иметь лишь один файл с атрибутами сборки AssemblyInfo.cs (версия и проч.), что избавляет от необходимости править кучку файлов, боясь забыть один из них а так - да, код таким образом шарить в большинстве случаев не лучшая идея Это сообщение отредактировал(а) mihryak - 27.5.2010, 19:10 |
|||
|
||||
Urvin |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 1.6.2006 Репутация: нет Всего: нет |
А в чем хитрость такого подхода? Зачем? Минимизация повторяемого кода путем размножения dll? Класс все же добавил через Existing+AddAsLink, спасибо! |
|||
|
||||
jonie |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 22 Всего: 118 |
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |