c# струкрута проекта и как сделать relative path для исходника.

Phoenix

есть проект на c#.
Хочу сделать струкруту типа
src/ здесь только .cs файлы
projects/ здесь .sln, csproj и т.д.
Оказалось, что filename не может содержать путь типа "../../src/main.cs"
Хотя есть пример приложения под той же студией на c++, где есть даже пункт в свойствах добавленного файла
relative path ..\..\src\arcemu-world\faction.cpp
Как вообще можно сделать ту струкруту, что я хочу. И может имеет смысл поступить как-то иначе.
Опыта в C# особого нет.
привык, что сорцы отдельно, сборка отдельно. Раньше вообще пользовался cmake, которая создавала нужные проекты в любом месте.
Будет много маленьких проектов, Будут либы, которые будут использоваться в разных проектах. чувствую, какой-то хаос предстоит, если оставить всё по-умолчанию. Ну не копипастить же эти либы в разные проекты!
юзается svn, поэтому не хочется в одну кучу валить исходники библиотек, исходники приложений и вообще исходники и всякие не особо важные файлы, типа .sln

tashka

в solution explorer добавь папку и в неё добавляй все классы, для либ тоже можешь отдельную папку создать, а всякие проектные файлы будут в корневой папке создаваться

Serab

да реально, было бы там много этих файлов sln/csproj, так их мало, пускай лежат, где лежат, путаницы никогда не возникало с этим. Так VC# он еще добрый, создает по умолчанию каталожик bin и др.

Phoenix

вот тут похожее.
http://www.rsdn.ru/forum/tools/3677816.flat.aspx
там предлагают общую либу собрать в компонент и дальше его юзать уже из всех проектов, как я понял. Про DEVPATH ничего не понял.

Phoenix

solution explorer добавь папку и в неё добавляй все классы, для либ тоже можешь отдельную папку создать, а всякие проектные файлы будут в корневой папке создават
там не относительный путь.
очень хочется на новой тачке сделать svn co. открыть проект, нажать ctrl-b и всё собралось, а не лазить в настройках.

Alexander08

что тебя конкретно не устраивает, я не понял, поясни плиз, может помогу чем. кста, там есть некие отличия для веб и для вин приложений...

Phoenix

есть 3 больших части исходников.
1. это протоколы, общие библиотеки.
2. это серверное приложение(может будет несколько которое открывает tcp-порты и ждёт клиентов.
3. это клиенты.
клиенты - это такие простые програмки на 95% одинаковые. и тесты в том числе.
хочу создавать этих клиентов быстро. без копипаста, чтобы 95% было общим открытым кодом.(базовый класс, например). Чтобы из любого маленького клиента можно было исправить/добавить в эти 95% чего-то.

Dasar

>хочу создавать этих клиентов быстро. без копипаста, чтобы 95% было общим открытым кодом.(базовый класс, например).
за чем ты для этого хочешь заинклюдить cs-файл, и почему не хочешь инклюдить dll (в которую исходный cs скомпилен)?

Phoenix

а если нужно посмотреть, что внутри? внести измененения?
ещё одну студию открывать?
я в студии не очень разбираюсь.
И потом. внутренне я понимаю, когда вызываются функции из dll, но когда из неё наследуются классы. Я это не очень понимаю.

Dasar

>а если нужно посмотреть, что внутри? внести измененения?
>ещё одну студию открывать?
чем тебя не устраивает один общий solution? за чем ты хочешь для каждого клиента сделать отдельный sln?

Phoenix

один супербольшой солюшен?
вот вася своего клиента решил написать.(новый проект) Добавляет его в солюшен.
В этом время петя делает тоже самое.
потом они комитят в svn всё. оба проекта будут в солюшене? мердж нормально пройдёт? или нужно будет кому-то потом руками ещё раз добавлять проекты в солюшен?

FRider

да, нормально. в чем проблема?солюшен - это текстовый файл. Ведь бывает так, что вася и петя отредактили один и тот же проект, добавив файлы или даже отредактили один файл7

okis

главное, чтобы Вася или Петя при коммите не делали Discard Server changes (в терминологии tfs)

FRider

типо ты так пошутил?

okis

серьёзно, некоторые так делают

FRider

? За это ж надо в рыло без разговоров. С другой стороны, такой функции даже не знаю в свн. Т.е. можно конечно сделать апдейт, потом перезаписать своим и коммит. Но в здравом уме так делать никто не будет

Serab

ну как же нету? Если конфликт возник, можно сказать resolve-mine четатам.

FRider

а ну да, но это ж тоже пиздец

Serab

Да, это намного хуже, чем пиздеть в log message.
Оставить комментарий
Имя или ник:
Комментарий: