Не удержался прокомментировать ситуацию из личного опыта, так как,
Еще 3 года назад писал, что у AliExpress принципиальная позиция оберегать и защищать прежде всего своих продавцов. Ведь всё очень просто, покупатель уйдет-придет, а продавцы стабильно % отчисляют этому притону.
И речь идет в т.ч. о крупных продавцах с огромными рейтингами, звёздами, всякими коронами в их оф системе AE, словом TOP среди топов, но по многочисленным отзывам, исчисляемых сотнями, ясно видно, отправляющие 1 товар на каждого десятого в лучшем случаи. Официальный ответ AE на такое ~"you are good buyer, we'll investigate and apply sanctions if so". Ну и, год спустя магазин процветал, а в общих отзывах ситуация не изменилась.
Да и отзывы живут по правилам площадки 3 мес (или 6 мес не помню). Для кого такие вещи прежде всего удобны?
Последней каплей стала вот эта хреновина https://www.youtube.com/watch?v=I8iapcdEemI где как дурак на пальцах снимал какие-то доказательства, что нет, требуемый CPU-z будет врать т.к. у них модифицированные системные модули (позже стали понятны ограничения AML архитектуры; хотя фактически адресация выше 2G, получается, что могла бы и быть ~ https://github.com/3F/aml_s905_uboot)
AE встал на защиту продавца.
В итоге, когда в сумме после спущенных 20к+ в этот притон на непонятно что, я так понял, что AE в целом это куча нервов, времени, и непонятного хлама, на постоянные разборки и доказательства. Сейчас он только для реально трудно-доступных деталей/запчастей (~пару раз было за эти годы). И, покупки действительно стали проще.
А ведь еще до запуска AE заказывал напрямую в зарубежных магазинах, и не знал таких бед как с ним. Берегите свое время и нервы! -"Ok, dear?"
в Apr 2016, я также писал еще одну статью по схожей тематике, но целиком посвященную MSBuild в виде альтернативы на плагинувую систему, но at runtime
Так...
По поводу генераторов sln, vcxproj и т.п.
У меня на гитхабе появилось другое, достаточно популярное решение, которое выделялось отдельным проектом спецом для DllExport.
И как оказалось, последние месяцы, это решение стало набирать также популярность среди разработчиков.
К тому же, можно очень быстро прикрутить любой свой обработчик в виде доп. хандлеров чтения/записи.
Хотя, это несколько иное направление.
По поводу сопутствующих решений в данной статье
Говорю сразу (меня часто дергают с vssbe проектом на дальнейшие развитие):
Проект не обновлялся года 2, НО находиться в [Активном состоянии] (в моей планерке он точно записан, не первым, но далеко не последним местом).
К тому же, он все еще прекрасно справляется с современным VS2017 и MSBuild 15
В последний раз, когда я тесно общался с MS, они занимались реорганизацией структуры от VS до самого маркета, который они все-таки решили выкатить тогда в сыром виде, окончательно заменив первоначальную галерею.
Поэтому, на тот момент времени, я просто переключился на другие задачи, пока они решали свои насущные проблемы <_< по иронии судьбы, одного в итоге ушатали в google :)
Сейчас же я достаточно плотно занят другими вещами, однако конечное решение, описаное в данной статье, оно все еще используется, по крайней мере, в десятках моих других открытых проектов при сборках, кодогенерации, разнообразных паках и т.п.
Однако, все движется, я это прекрасно понимаю, и его дальнейшие направление/позиционирование пока находиться в некоторой абстракции. Но в том или ином виде он все еще существует в моих задачах. Да и народ, вроде как требует продолжения.
В следующем году, я планирую выделить некоторые его компоненты в отдельные открытые проекты, по крайне мере, планы на "статический SBE-scripts (прим. статический, в плане не регистровый, без стека, с обычной интеграцией в runtime с msbuild и т.п.)".
К слову, генератор и парсер sln как раз был выпущен из этого проекта, под более свободной лицензией MIT.
Ваш энтузиазм,
на совместное решение мне понятен :)
Хмм, но по планам, и срокам с этой темой, пока без конкретики, НО да, если что пишите:
github.com/3F
Рад рассмотреть то или иное сотрудничество.
Прямые контакты там же, но продуктивнее поднять задачки для дальнейшей дискуссии.
p.s. на GitHub я выполнил окончательный переезд с Bitbucket где-то в 2016. То есть, туда ходить не надо. Там остались только парочку открытых репок, на которые были даны ссылки на других ресурсах, в опубликованном коде и т.п. в общем пускай висит пока.
p.p.s. мне пишется "недостаточно кармы", чтобы поставить Вам плюсик
Зачем вообще использовать IVsUpdateSolutionEvents, Shell.Interop, EnvDTE, Microsoft.Build.Evaluation… ума не приложу o_o
да кто только додумался до распространения VSSDK?
Ведь, — «зачем идти сложным путем, когда есть простой ?»
чего еще нужно то ?! я ведь эти же решения вам и привел в пример!
Я не считал и не считаю удобным вариант с зависимыми проектами, я об этом ни разу не упомянул.
Вы вообще можете не пользоваться IDE для построения, используйте msbuild! что вам мешает ?! ведь он более гибок! добавьте необходимые таргеты и забудьте все как страшный сон…
И сколько уже можно, Здесь не рассматриваются и не предлагаются конечные решения! — это для разработчиков, а вы описываете и требуете примеры для обычных пользователей VS. Прочтите «Предупреждение» что я добавил в материал.
Если вам нужно обсуждение плагина, а также обсуждение вариантов — Solution-wide pre-build event, и вообще какими еще кто пользуется, то быть может лучше создать другую статью специально под это обсуждение ?!
:( Так ведь не о группировки речь идет. Вы ведь используете Pre/Build events для проектов? ну а предположим вам надо событие на пару-тройку проектов сразу, или сразу для всех…
это не мое решение! это не моя идея! это пример как поступают люди! я вот, например, как раз плагин по этим поводам решил в паблик отправить, чтобы как раз устранить подобные проблемы или неудобства
Невозможность работы «плугина» на билд-сервере без студии.
это одна из… что появилась позднее. Да все правильно, это уже было в рамках того плагина в ссылках.
Однако изначально это solution-context, ну например этот комментарий, а также другие приведенные Этот плагин был отправлен в паблик и доведен до такого состояния, в котором он находиться сейчас, уже в рамках предоставления какого-то общего повторного решения. Опять-таки для тех кто в нем нуждается.
У каждого свой workflow и не всегда по его воли! есть вообще своеобразные «коробочные решения», те что предоставляют подконтрольным подразделениям…
Но еще раз этот, материал призван в первую очередь — осветить некоторые аспекты решения и взаимодействия для разработчиков, для тех кому это понадобиться, т.е. столкнулся с задачей, например как взаимодействовать с devenv.exe или как работать с приоритетной подпиской, и все что выше.
ok, Какие-нибудь из приведенных в моих комментариях подойдут? Однако, прошу еще раз заметить, что здесь описаны способы работы для разработчиков с описанными компонентами VS(ну назовем их так), а не конечные способы решения проблем… как и написано
… необходимо осветить некоторые аспекты решения и взаимодействия ...
Когда в solution есть X проект, от которого зависят Y проекты. Этот проект может не производит никаких binaries, а заниматься лишь некоторым обслуживанием которые будут используются при сборке Y проектов. По сути, такой метод может служить для обработки события начала построения именно в нужном контексте для всех Y проектов и т.п.
редактировать свои сообщения запрещено? или и тут бонусы нужны
____
ах да, касательно доп. примеров, когда и что может понадобиться из этого набора…
собственно, плагин(который уже для обычных юзеров) в пример и забыл привести :)
В общем, некоторый набор опций, который может быть достигнут, кратко показан в виде небольших примеров:
например, можете поискать чего-нибудь там, однако, учитывайте, что например материал — Errors.Stop build не означает, что подобное реализуется исключительно на приоритетном уровне в самых верхах UpdateSolution_Begin — нет, это можно реализовать разными путями, тут особых проблем нет, а вот нумерация версий, может быть как раз одним из частных примеров и т.п.
:) а где я написал «независимых»? если они в одном solution, значит они там не просто так…
и кстати, вот это выше:
… When solution and projects have the same Debug/Release configurations everything is trivial, but in our case solution may have custom configurations which simply don't have corresponding matching configurations in any project....
это чел. объясняет мне в личной переписке реальный пример их хард кастомного решения, так что чудеса и не такие бывают :)
т.е. нет, тут еще ничего страшного, там детали куда более прикольные
к примеру, мое решение было взято за основу, однако у них более жесткие вещи и к примеру им требуется нечто вроде коробочного решения для подконтрольных им разработчиков, которые разбросаны по всему миру… ну как я понял
мне вот лично явно не требовалось то, что сейчас нужно им… так что кому что, мое дело рассказать как этого добиться
хм, подскажите где и что улучшить, изменю, или добавлю пояснения…
возможно что-то детализировать, или подкорректировать формулировки и направления ветра
ну, так в чем проблема, Вам значит и не надо :) а проблемы надо решать по мере поступления!
Мне вот почему-то оно ни разу не понадобилось.
2 примера в комментарии выше… под обслуживанием имелось ввиду то, что необходимо выполнить для всех проектов сразу и т.п.
Вы же понимаете пример, когда люди создают empty project в solution и делают ~70 проектов зависимых только от него?
Изначальная потребность… работа с Solution-Context в рамках событийной модели студии.
т.е. контекст решения (solution-context) по этому вопросу никак не предусмотрен штатными средствами IDE Visual Studio.
Соответсвенно, все Pre/Build события доступны только в рамках проекта, и если вам требуется что-то обслуживать, предположим единожды для 70 проектов в solution, то появляется задачка…
а также, это косвенно связано с подобными вопросами:
… with VS may be you know — how to find out (from the project or targets file) what is currently selected solution configuration? Not project configuration, but solution configuration! When solution and projects have the same Debug/Release configurations everything is trivial, but in our case solution may have custom configurations which simply don't have corresponding matching configurations in any project.
Важное замечание — в этом материале рассмотрена не одна проблема, и выше не предлагается конечное решение, просто все описано как продолжение одной истории :) Если нужно конечно решение, см. плагин в ссылках.
Так, на примере развитие базовой модели для этого плагина, требовалась унификация обработки между различными компонентами для изолированных сред (таких как CI и т.п.), поэтому появились задачи на MSBuild Tools и консольный devenv.com, а сним работать через VSPackage просто так нельзя, но есть варианты… и т.п.
Поэтому, для тех у кого схожие потребности(приоритетная событийная модель, взаимодействие с msbuild.exe, взаимодействие с devenv.exe/.com и все что выше), могут быстро решить свои проблемы уже для своих плагинов и прочих решений, в том объеме, в котором это требуется.
Обратите также внимание, что статья не для пользователей Visual Studio, а для разработчиков, как и указано в заголовке. Если же требуется конечное обобщенное общее решение, см. плагин в галереи
Не удержался прокомментировать ситуацию из личного опыта, так как,
Еще 3 года назад писал, что у AliExpress принципиальная позиция оберегать и защищать прежде всего своих продавцов. Ведь всё очень просто, покупатель уйдет-придет, а продавцы стабильно % отчисляют этому притону.
И речь идет в т.ч. о крупных продавцах с огромными рейтингами, звёздами, всякими коронами в их оф системе AE, словом TOP среди топов, но по многочисленным отзывам, исчисляемых сотнями, ясно видно, отправляющие 1 товар на каждого десятого в лучшем случаи. Официальный ответ AE на такое ~"you are good buyer, we'll investigate and apply sanctions if so". Ну и, год спустя магазин процветал, а в общих отзывах ситуация не изменилась.
Да и отзывы живут по правилам площадки 3 мес (или 6 мес не помню). Для кого такие вещи прежде всего удобны?
Последней каплей стала вот эта хреновина https://www.youtube.com/watch?v=I8iapcdEemI где как дурак на пальцах снимал какие-то доказательства, что нет, требуемый CPU-z будет врать т.к. у них модифицированные системные модули (позже стали понятны ограничения AML архитектуры; хотя фактически адресация выше 2G, получается, что могла бы и быть ~ https://github.com/3F/aml_s905_uboot)
AE встал на защиту продавца.
В итоге, когда в сумме после спущенных 20к+ в этот притон на непонятно что, я так понял, что AE в целом это куча нервов, времени, и непонятного хлама, на постоянные разборки и доказательства. Сейчас он только для реально трудно-доступных деталей/запчастей (~пару раз было за эти годы). И, покупки действительно стали проще.
А ведь еще до запуска AE заказывал напрямую в зарубежных магазинах, и не знал таких бед как с ним. Берегите свое время и нервы! -"Ok, dear?"
Оповещений на почту на хабре нет что ли o_O года 2 наверное не попадал на эту страницу. как чувствовал :)
хм, также вроде была авторизация через google, пришлось восстанавливать пароль, странно.
Tarmik, рад, что материал оказался полезным!
в Apr 2016, я также писал еще одну статью по схожей тематике, но целиком посвященную MSBuild в виде альтернативы на плагинувую систему, но at runtime
Так...
По поводу генераторов sln, vcxproj и т.п.
У меня на гитхабе появилось другое, достаточно популярное решение, которое выделялось отдельным проектом спецом для DllExport.
И как оказалось, последние месяцы, это решение стало набирать также популярность среди разработчиков.
К тому же, можно очень быстро прикрутить любой свой обработчик в виде доп. хандлеров чтения/записи.
Хотя, это несколько иное направление.
По поводу сопутствующих решений в данной статье
Говорю сразу (меня часто дергают с vssbe проектом на дальнейшие развитие):
К тому же, он все еще прекрасно справляется с современным VS2017 и MSBuild 15
В последний раз, когда я тесно общался с MS, они занимались реорганизацией структуры от VS до самого маркета, который они все-таки решили выкатить тогда в сыром виде, окончательно заменив первоначальную галерею.
Поэтому, на тот момент времени, я просто переключился на другие задачи, пока они решали свои насущные проблемы <_< по иронии судьбы, одного в итоге ушатали в google :)
Сейчас же я достаточно плотно занят другими вещами, однако конечное решение, описаное в данной статье, оно все еще используется, по крайней мере, в десятках моих других открытых проектов при сборках, кодогенерации, разнообразных паках и т.п.
Однако, все движется, я это прекрасно понимаю, и его дальнейшие направление/позиционирование пока находиться в некоторой абстракции. Но в том или ином виде он все еще существует в моих задачах. Да и народ, вроде как требует продолжения.
В следующем году, я планирую выделить некоторые его компоненты в отдельные открытые проекты, по крайне мере, планы на "статический SBE-scripts (прим. статический, в плане не регистровый, без стека, с обычной интеграцией в runtime с msbuild и т.п.)".
К слову, генератор и парсер sln как раз был выпущен из этого проекта, под более свободной лицензией MIT.
Ваш энтузиазм,
на совместное решение мне понятен :)
Хмм, но по планам, и срокам с этой темой, пока без конкретики, НО да, если что пишите:
Рад рассмотреть то или иное сотрудничество.
Прямые контакты там же, но продуктивнее поднять задачки для дальнейшей дискуссии.
p.s. на GitHub я выполнил окончательный переезд с Bitbucket где-то в 2016. То есть, туда ходить не надо. Там остались только парочку открытых репок, на которые были даны ссылки на других ресурсах, в опубликованном коде и т.п. в общем пускай висит пока.
p.p.s. мне пишется "недостаточно кармы", чтобы поставить Вам плюсик
да кто только додумался до распространения VSSDK?
Ведь, — «зачем идти сложным путем, когда есть простой ?»
additions to post above
чего еще нужно то ?! я ведь эти же решения вам и привел в пример!
Я не считал и не считаю удобным вариант с зависимыми проектами, я об этом ни разу не упомянул.
Вы вообще можете не пользоваться IDE для построения, используйте msbuild! что вам мешает ?! ведь он более гибок! добавьте необходимые таргеты и забудьте все как страшный сон…
И сколько уже можно, Здесь не рассматриваются и не предлагаются конечные решения! — это для разработчиков, а вы описываете и требуете примеры для обычных пользователей VS. Прочтите «Предупреждение» что я добавил в материал.
Если вам нужно обсуждение плагина, а также обсуждение вариантов — Solution-wide pre-build event, и вообще какими еще кто пользуется, то быть может лучше создать другую статью специально под это обсуждение ?!
вы как вообще читаете?
это одна из… что появилась позднее. Да все правильно, это уже было в рамках того плагина в ссылках.
Однако изначально это solution-context, ну например этот комментарий, а также другие приведенные
Этот плагин был отправлен в паблик и доведен до такого состояния, в котором он находиться сейчас, уже в рамках предоставления какого-то общего повторного решения. Опять-таки для тех кто в нем нуждается.
У каждого свой workflow и не всегда по его воли! есть вообще своеобразные «коробочные решения», те что предоставляют подконтрольным подразделениям…
Но еще раз этот, материал призван в первую очередь — осветить некоторые аспекты решения и взаимодействия для разработчиков, для тех кому это понадобиться, т.е. столкнулся с задачей, например как взаимодействовать с devenv.exe или как работать с приоритетной подпиской, и все что выше.
Когда в solution есть X проект, от которого зависят Y проекты. Этот проект может не производит никаких binaries, а заниматься лишь некоторым обслуживанием которые будут используются при сборке Y проектов. По сути, такой метод может служить для обработки события начала построения именно в нужном контексте для всех Y проектов и т.п.
____
ах да, касательно доп. примеров, когда и что может понадобиться из этого набора…
собственно, плагин(который уже для обычных юзеров) в пример и забыл привести :)
В общем, некоторый набор опций, который может быть достигнут, кратко показан в виде небольших примеров:
* Обзорно в галереи
* В wiki / Examples
например, можете поискать чего-нибудь там, однако, учитывайте, что например материал — Errors.Stop build не означает, что подобное реализуется исключительно на приоритетном уровне в самых верхах UpdateSolution_Begin — нет, это можно реализовать разными путями, тут особых проблем нет, а вот нумерация версий, может быть как раз одним из частных примеров и т.п.
и кстати, вот это выше:
это чел. объясняет мне в личной переписке реальный пример их хард кастомного решения, так что чудеса и не такие бывают :)
т.е. нет, тут еще ничего страшного, там детали куда более прикольные
к примеру, мое решение было взято за основу, однако у них более жесткие вещи и к примеру им требуется нечто вроде коробочного решения для подконтрольных им разработчиков, которые разбросаны по всему миру… ну как я понял
мне вот лично явно не требовалось то, что сейчас нужно им… так что кому что, мое дело рассказать как этого добиться
возможно что-то детализировать, или подкорректировать формулировки и направления ветра
2 примера в комментарии выше… под обслуживанием имелось ввиду то, что необходимо выполнить для всех проектов сразу и т.п.
Вы же понимаете пример, когда люди создают empty project в solution и делают ~70 проектов зависимых только от него?
Вы про что?
VS — тоже по сути путь решения… или что имеется ввиду о_О
т.е. контекст решения (solution-context) по этому вопросу никак не предусмотрен штатными средствами IDE Visual Studio.
Соответсвенно, все Pre/Build события доступны только в рамках проекта, и если вам требуется что-то обслуживать, предположим единожды для 70 проектов в solution, то появляется задачка…
а также, это косвенно связано с подобными вопросами:
и другие.
Часть решений можно также рассматривать здесь, кстати — stackoverflow.com/q/2295454
Важное замечание — в этом материале рассмотрена не одна проблема, и выше не предлагается конечное решение, просто все описано как продолжение одной истории :) Если нужно конечно решение, см. плагин в ссылках.
Так, на примере развитие базовой модели для этого плагина, требовалась унификация обработки между различными компонентами для изолированных сред (таких как CI и т.п.), поэтому появились задачи на MSBuild Tools и консольный devenv.com, а сним работать через VSPackage просто так нельзя, но есть варианты… и т.п.
Поэтому, для тех у кого схожие потребности(приоритетная событийная модель, взаимодействие с msbuild.exe, взаимодействие с devenv.exe/.com и все что выше), могут быстро решить свои проблемы уже для своих плагинов и прочих решений, в том объеме, в котором это требуется.
Обратите также внимание, что статья не для пользователей Visual Studio, а для разработчиков, как и указано в заголовке. Если же требуется конечное обобщенное общее решение, см. плагин в галереи