Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

MsBuild & папочки...

665  
Murr_0001 знакомое лицо25.11.19 17:57
Murr_0001
25.11.19 17:57 

MsBuild & папочки...


Снова слегка запутался...


ВМ начала произвольно отключатся от хоста - как результат - не могу деплоить изменения в проектах.


Идея была заменить Студию обычным БАТ-файликом с вызовом MsBuild для каждого из проектов

и далее как-то сделать деплоймент.


Но! Запутался в папочках... :( в трех-четырех штуках... ну может в пяти...


Первая часть - Компиляция аппликатиона.

Три папочки определяются тремя параметрами:

/p:WorkingDirectory=%L4%\Builds\ImportWinApp

/p:OutDir=%L4%\Builds\ImportWinApp

%L4% - переменная среды хранящая "уровень вложенности" проекта, ну или по простому - часть релативного пути к месту результата...

Одна сложность - путь требуется относительно местоположения файла проекта.

Вроде как корректно поправил файлики проектов апппикейшена - все компилируется и складывается куда указано.


Вторая часть - Копиляция клиентов.

Клиенты у меня оформлены в дллки и должны лежать в папочке Clients.

Соответственно заменяю

/p:WorkingDirectory=%L4%\Builds\ImportWinApp

/p:OutputPath=%L4%\Builds\ImportWinApp\Clients


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

Вроде все правильно?


Ну Я надеюсь, что вы заметили разницу - OutDir & OutputPath?

Ну это мелочь... правда за исключением того, что второе понятно, а первое нет. Я не нашел как используется и используется ли первое. Только примеры с использованием.


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

Но и без нее проект не компилируется...

Непонятно.


Дальше... папочка где лежит батничек... это - вообще отдельно. Т.е. - совсем. У меня ощущение что МсБуилд об ней не знает.

Тем не менее - она нужна - только от нее можно задать релативно копирование/перемещение полученных клиентских дллок.


Еще есть папочка Клиентов, куда надо копировать/перемещать построенные клиенты...

И есть папочки объектных файлов. Для Шарпа - не актуально, но используются.


В общем - Я так и не понял какие пути мне надо прописать в параметрах, чтобы МсБуилд взял корректные сорцы из одного места, уже откомпилированные библиотеки другого и сложил результат в третье...


П.С. Могу написать полный вызов Шарпового компилятора, но интересует решение на уровне МсБуилда.



#1 
AlexNek патриот25.11.19 21:10
AlexNek
NEW 25.11.19 21:10 
в ответ Murr_0001 25.11.19 17:57
но интересует решение на уровне МсБуилда.

ну ищи, через полгода как раз и найдешь хаха


У меня СИ и тот солушин пользует

#2 
Murr_0001 знакомое лицо26.11.19 11:53
Murr_0001
NEW 26.11.19 11:53 
в ответ AlexNek 25.11.19 21:10

Начинаю потихоньку звереть...


Простая команда:

%MSBUILD% /p:OutputPath=%L4%\%PRJDIR% @msbuild.config.dat .\Apps\CareyGlass.Apps\CareyGlass.Interfaces\CareyGlass.Interfaces.csproj >>%BLDLOG%

строит, как и ожидается, дллку с интерфейсами и кладет в указанную папку...


Вторая команда

%MSBUILD% /p:OutputPath=%L3%\%PRJDIR% @msbuild.config.dat .\..\Gps.Order\Gps.Order\GPS.Order.ColumnsDefs\GPS.Order.ColumnsDefs.csproj >>%BLDLOG%

строит, как и ожидается, дллку с представлениями колонок и кладет в указанную папку.


Первый проект не имеет никаких ссылок.

Второй проект не имеет никаких ссылок.


Вопрос:

Какого юха при построении второго проекта в месте хранения батничка создается структура папок по %PRJDIR% и туда копируется дллка интерфейсов?


#3 
Murr_0001 знакомое лицо26.11.19 12:20
Murr_0001
NEW 26.11.19 12:20 
в ответ Murr_0001 26.11.19 11:53

Прописал дополнительно WorkingDirectory - полегчало:

%MSBUILD% /p:OutputPath=%L3%\%PRJDIR%;WorkingDirectory=%L4%\%PRJDIR% @msbuild.config.dat .\..\Gps.Order\Gps.Order\GPS.Order.Factory\GPS.Order.Factory.csproj >>%BLDLOG%

не создается структура папок в текущей папке...


Следующая напасть.

Перепутал последовательность построения проектов.

Тот из проектов, который нужен для текущего - строился позднее.

Прямых ссылок на требующийся проект, т.е. вида:

<ProjectReference Include="..\..\CareyGlass.Apps\CareyGlass.Interfaces\CareyGlass.Interfaces.csproj">
<Project>{a0a574f4-33dc-4312-8ba7-0abd09cd7323}</Project>
<Name>CareyGlass.Interfaces</Name>
</ProjectReference>

в теле файла проекта нет - они все условные. Т.е. где-то задано Condition="..."

Из тех условий которые заданы вытекает использование готовой дллки в текущей рабочей папке.

Но там дллки нет - не построена еще...

Тем не менее - проект - собирается. Каким-то образом, игнорируя условия, ищется ссылка на проект и из папки объектников добывается построенная на предыдущем баче дллка.

Мрак...

#4 
AlexNek патриот26.11.19 12:40
AlexNek
NEW 26.11.19 12:40 
в ответ Murr_0001 26.11.19 12:20

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

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

#5 
Murr_0001 знакомое лицо26.11.19 15:31
Murr_0001
NEW 26.11.19 15:31 
в ответ AlexNek 26.11.19 12:40

Новая версия студии заточена под командую строку,

-----

Там чего - редактор-компилятор выкинули? Вроде как был на месте... не дошли до бат-редактирования текста как на ЕСа,,,

А билд и там и там все одно через МсБуилд..

#6 
AlexNek патриот26.11.19 15:45
AlexNek
NEW 26.11.19 15:45 
в ответ Murr_0001 26.11.19 15:31

не выкинули, а добавили

https://www.tutorialsteacher.com/core/net-core-command-lin...

#7 
Murr_0001 знакомое лицо26.11.19 16:18
Murr_0001
NEW 26.11.19 16:18 
в ответ AlexNek 26.11.19 15:45

Судя по описанию - сложили что уже имело место быть имплементированnо в одну утилиту...

#8 
AlexNek патриот26.11.19 18:19
AlexNek
NEW 26.11.19 18:19 
в ответ Murr_0001 26.11.19 16:18

Ну так нужда заставила. Под Никсами студию не сильно позапускаешь.

Ну и структура проекта изменилась

#9 
Murr патриот29.11.19 12:34
Murr
NEW 29.11.19 12:34 
в ответ AlexNek 26.11.19 18:19

Так в Студии для построения проектов ничего и не было!!!

Файл проекта лежал в папке.

Средства компиляции - тоже в папке, другой.

Все операции по сборке и управление ее процессом - МсБуилд.

Сама Студия только набор редакторов с визардами и вызов МсБуилд...

Все. спок


#10 
Murr патриот29.11.19 12:39
Murr
NEW 29.11.19 12:39 
в ответ Murr 29.11.19 12:34

Уткнулся в новую напасть.


Перестроил солютион на по-проектное построение.

Вроде все работает как надо. По крайней мере все компилится и даже деплоится.


Одна проблема - деплоится "не туда"...

Путь куда деплоить - указан, но почему-то игнорируется... не понимаю...


Кто-нибудь может скинуть лог команд при деплойменте на сетевой/unc диск?

#11 
Murr патриот29.11.19 14:43
Murr
NEW 29.11.19 14:43 
в ответ Murr 29.11.19 12:39

Кто еще не слышал как Я матерюсь по поводу известного мудака билли?


Ну сегодня Я готов не просто матерится, а матерится с надрывом...


Есть ClickOnce деплоймент визард.

Кто не знает - появляется в свойствах выполняемых проектов.

Там всего 3-4 формочки - проводка по заданию параметров деплоя - куда, откуда потом ставить, как менять версию и т.д. и т.п....


Результат выполнения без затей пишется в файл проекта. Прямо промежду остальной информации для построения.

Можно открыть проект до и после - разница будет видна вполне наглядно.


Из интересующих меня частей отмечу две: <InstallUrl> и <PublishUrl>

Две - потому как они у меня не совпадают.

Ну не вижу Я с виртуалки сеть - только через хост и его мапленные диски.

Пользователи - сеть видят и пользуют или унц-имена или мапленные диски.

Но не суть...


Визард - отработал и все что надо прописал.

Деплой из под Студии - идет. Ну мелочь с путаницей в протоколах опускаем.


А из батча - не идет.

Если точнее - из батча не подставляется прописанный <PublishUrl>, а подставляется <WorkingDirectory> (вроде, не трассировал).


Microsoft.Common.targets использование <PublishUrl> - прописано.

Правда прописано немного непонятно - конечный путь для деплоя выбирается из 5-6 вариантов... НО! При построении из батча оно не работает.


После поисков - нашел на стаковерфлове вариант - вместо <PublishUrl> пользовать <PublishDir>.

Да-да - вместо прописанного утрыковским визардом параметра - надо писать другой, нигде толком не описанный... да еще и похожий.


За полчаса непрерывного высказывания своего мнения об этом утерке - из цензурного только - писсец полный...


#12 
AlexNek патриот30.11.19 13:31
AlexNek
NEW 30.11.19 13:31 
в ответ Murr 29.11.19 12:34

Так проблема не в том кто билдит, а в том кто задает параметры.

#13 
Murr патриот30.11.19 17:41
Murr
NEW 30.11.19 17:41 
в ответ AlexNek 30.11.19 13:31

У МсБуилда параметров - полторы страницы.

Это - с многострочными описаниями и примерами.

И... по секрету... знания пераметров недостаточно для корректного использования МсБилда... как раз об этом топик.

#14 
AlexNek патриот01.12.19 14:13
AlexNek
NEW 01.12.19 14:13 
в ответ Murr 30.11.19 17:41

ну так поэтому и грю что нефиг МсБильд напрямую пользовать спок

#15 
Murr_0001 местный житель01.12.19 17:20
Murr_0001
NEW 01.12.19 17:20 
в ответ AlexNek 01.12.19 14:13

Угу... надо "понизится" на ступеньку и пендрючить вызовы компайлера и линкера... смущ


Я как-то поковырял соурсники МсБилда... мягко говоря - сильно не понравилось...

хотел понять как у них сделана перестройка списков параметров и трасссировка...

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

Единственное что полезное вынул - у них интересно сделана обработка обработка

ошибок консольного приложения - перезапускают само из себя и отлавливают ехцептионы...

#16 
Murr патриот12.12.19 15:18
Murr
NEW 12.12.19 15:18 
в ответ Murr_0001 01.12.19 17:20

Очередной вопрос...


Студия, солюшен... примерно 80 проектов в солюшене... часть из них - тестовые...


Все строится, все деплоится и инсталится по ClickOnce...


Текущее состояние:

Инсталляция идет из одного источника, но в 3 разных места. Ну три разных фабрики...

Существенно - версии "клиентов" и версии продуцируемых файлов отличаются.

Конфликт решается в конфиге путем прописывания нужных параметров.


Текущая проблема:

После инсталляции имеется дефаултный конфиг, который в 2-х случаях из 3-х не соответствует требованиям.

Проще - прописаны три конфига, но только один из 3-х "паравильный" для текущей инсталляции.

Т.е. в двух случаях надо читать доку и править конфиг ручками. Редактор - могу сделать, но он лишний...


Вопросик:

Как описать загрузку нужного конфига?

Повторюсь - ClickOnce инсталляция.


Один из вариантов - усложнить проект с копированием только нужных файлов и сделать 3 разных инсталляции. В процессе и не интересует.


#17 
AlexNek патриот12.12.19 20:37
AlexNek
NEW 12.12.19 20:37 
в ответ Murr 12.12.19 15:18
Повторюсь - ClickOnce инсталляция.

Сорри никогда не игрался, а так этим вопросом СИ занимался.

#18