Я слишком долго писал на С++, и привык к тому что в системе сборки используются текстовые файлы типа CMakeLists.txt или something.gyp.
Эти файлы не страшно положить в Git-репозиторий, и потом их удобно мержить.
А в .NET мире используются machine-generated sln/csproj, и мне как-то стремно класть их в Git. (А уж как мержить этот xml — вообще не представляю)
Я посмотрел на NAnt — кажется что он помер.
FAKE выглядит круто (люблю F#), но он в основном заточен на компиляцию тех же sln/csproj
Я конечно могу использовать CMake, но вдруг для .NET есть что-то свое, родное.
Здравствуйте, Abyx, Вы писали:
A>Я слишком долго писал на С++, и привык к тому что в системе сборки используются текстовые файлы типа CMakeLists.txt или something.gyp. A>Эти файлы не страшно положить в Git-репозиторий, и потом их удобно мержить.
.csproj вполне можно модифицировать руками. Например, прочитать дополнительные файлы из внешнего файла.
Но непонятно, какую цель вы преследуете. Мёржить .csproj можно вполне, это не страшно.
Здравствуйте, Abyx, Вы писали:
A>А в .NET мире используются machine-generated sln/csproj, и мне как-то стремно класть их в Git. (А уж как мержить этот xml — вообще не представляю) A>Я посмотрел на NAnt — кажется что он помер. A>FAKE выглядит круто (люблю F#), но он в основном заточен на компиляцию тех же sln/csproj
sln текстовый. csproj имеет довольно простой формат (1-2 уровня) и мерджится, как правило, без проблем.
Здравствуйте, Abyx, Вы писали:
A>А в .NET мире используются machine-generated sln/csproj, и мне как-то стремно класть их в Git.
Они не machine generated. Однократное создание шаблона визардом не значит, что они будут перекомпилироваться постоянно. При добавлении ссылок и изменении конфигурации в IDE эти файлы меняются вполне предсказуемым и описанным в документации способом, то же самое можно длеать и вручную.
A>Я конечно могу использовать CMake, но вдруг для .NET есть что-то свое, родное.
Для .NET родным является MSBuild. Не только в Visual Studio, но и в MonoDevelop и Xamarin Studio на всех операционках. В Visual Studio эта же система сборки используется и для C++.
A>Эти файлы не страшно положить в Git-репозиторий
csproj- и vcxproj-файлы — это скрипты MSBuild, их нужно класть в репозиторий (если только vcxproj-скрипты не производные от другой системы сборки типа CMake). У sln-файлов формат другой, их в репозиторий можно и не класть, они не особо нужны для автоматической сборки. Но обычно кладут.
A>А уж как мержить этот xml — вообще не представляю
Здравствуйте, Qbit86, Вы писали:
A>>А в .NET мире используются machine-generated sln/csproj, и мне как-то стремно класть их в Git.
Q>Они не machine generated. Однократное создание шаблона визардом не значит, что они будут перекомпилироваться постоянно. При добавлении ссылок и изменении конфигурации в IDE эти файлы меняются вполне предсказуемым и описанным в документации способом, то же самое можно длеать и вручную.
но руками-то их не написать. один-два файла еще можно добавить, а вот новый проект добавить — только через ИДЕ.
причем если что-то писать/менять руками, надо использовать то же форматирование что и в IDE, иначе она всё поменяет
Q>>Они не machine generated. Однократное создание шаблона визардом не значит, что они будут перекомпилироваться постоянно. При добавлении ссылок и изменении конфигурации в IDE эти файлы меняются вполне предсказуемым и описанным в документации способом, то же самое можно длеать и вручную.
A>но руками-то их не написать. один-два файла еще можно добавить, а вот новый проект добавить — только через ИДЕ.
Во-первых, написать их руками можно. Только нужно знать, какие свойства нужно там задать. Но это нужно знать в любой системе билда.
Во-вторых — а это обязательно, писать руками с нуля? Если да — можно один раз сделать пустой проект и сохранить как образец, если IDE религия не позволяет использовать.
A>причем если что-то писать/менять руками, надо использовать то же форматирование что и в IDE, иначе она всё поменяет
Вот честно, сколько не менял файлы проектов — ни разу не было надобности менять стндартное форматирование.
Если вам это уж очень принципиально — сделайте определение проекта в своём отдельном файле и импортируйте в csproj.
Я так не пробовал, но, по идее, должно работать.
Мне кажется, вы решаете не ту задачу, о которой задаёте вопрос.
По заданному вопросу: в репозиторий проект класть не страшно, мёрджится он тоже легко.