Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> using, подключение своего класса, [C#] [2010] 
:(
    Опции темы
Urvin
Дата 26.5.2010, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 1.6.2006

Репутация: нет
Всего: нет



Порылся в гуглях и имеющейся литературе, никак не возьму в толк..

Пусть есть у меня проект в папке D:\CSharp\MyProject\MyProject.csproj
Рядом с ним валяется настроечная шелуха и классы, принадлежащие к проекту.

Я придумал свой класс MyClass:
Код

using System
namespace Me.MyClass
{
    public class TMyClass
    {
        public TMyClass()
        {
        }
        ...
    }
}


Так как я подумал, что этот класс было бы неплохо использовать в различных проектах, я сохранил его в папку
 D:\CSharp\Common

Вопрос: как подключить свой класс к своему проекту, да так чтобы он не копировался в папку с проектом (как происходит в меню Add->Existing)?
Ведь если я усовершенствую исходный файл, то он не синхронизируется со сборкой и я как самый несчастный буду должен растиражировать этот файл на N проектов.

В С++ я бы использовал конструкцию
Код
#include "..\Common\MyClass.cpp"

Что сделать в C#?

Это сообщение отредактировал(а) Urvin - 26.5.2010, 23:42
PM MAIL   Вверх
Экскалупатор
Дата 27.5.2010, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 11
Всего: 24



если добавляешь *.cs, то в свойствах этого файла(когда он уже в солюшен добавлен) выставь Copy Always(типа должен копировать каждый раз при открытии проекта новую копию, и работать с этой копией). 
а если добавляешь Dll то у него есть параметр Copy Local = True(по умолчанию), поставь в false и он не будет копироваться.

Это сообщение отредактировал(а) Экскалупатор - 27.5.2010, 07:37
PM MAIL ICQ   Вверх
mihryak
Дата 27.5.2010, 11:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



Экскалупатор,  Copy Always копирует файл в output directory при билде, не думаю, что автор хочет этого


Urvin, можно добавить файл во проекты как ссылку через Add Existing Item, только нажав не на Add, а на Add As Link из выпадающего списка кнопки
только работать с ним будет не очень удобно, если подразумевается регулярная правка - при частых go to declaration студия будет ругаться, что тот же файл открыт другим проектом, ничего пагубного не несёт, но раздражает

вообще, правильнее, конечно, насобирать кучку таких классов и сделать из них новую сборку common
PM MAIL ICQ   Вверх
Выхухоль
Дата 27.5.2010, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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 классы в новом проекте, мне придется брать их исходники из этого веб проекта и компилировать их в новом. 
PM MAIL ICQ   Вверх
mihryak
Дата 27.5.2010, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 731
Регистрация: 28.4.2007
Где: С-Пб

Репутация: 19
Всего: 36



Выхухоль, добавление .cs файла через линк тоже имеет право на существование
с этой фишкой можно, например, иметь лишь один файл с атрибутами сборки AssemblyInfo.cs (версия и проч.), что избавляет от необходимости править кучку файлов, боясь забыть один из них

а так - да, код таким образом шарить в большинстве случаев не лучшая идея

Это сообщение отредактировал(а) mihryak - 27.5.2010, 19:10
PM MAIL ICQ   Вверх
Urvin
Дата 27.5.2010, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 66
Регистрация: 1.6.2006

Репутация: нет
Всего: нет



Цитата(Выхухоль @  27.5.2010,  14:19 Найти цитируемый пост)
в c# в отличие от cpp работают со сборками классов (DLL, EXE) а не с их конечными исходниками (*.cs), конечно можно добавить исходник класса как было сказано выше -но это уже будет не красиво.

А в чем хитрость такого подхода? Зачем?
Минимизация повторяемого кода путем размножения dll?

Класс все же добавил через  Existing+AddAsLink, спасибо!
PM MAIL   Вверх
jonie
Дата 27.5.2010, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Цитата


А в чем хитрость такого подхода? Зачем?
Минимизация повторяемого кода путем размножения dll?
упрощение деплоя приложения например.


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0702 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.