Резюме для программиста
для упорядоченных энумов
Не существует упорядоченных энумов.
https://docs.microsoft.com/en-us/dotnet/csharp/language-re...
А если кому то это хочется, то с хотелками что то не так
Не существует упорядоченных энумов.
https://docs.microsoft.com/en-us/dotnet/csharp/language-re...
А если кому то это хочется, то с хотелками что то не так
Как вы относитесь желанию разраба тащить и регать в GAC либы типа известных логгеров, юнит тестов и прочих утилит? Не через Нюгет там внедрять в проекты и отслеживать версионность, а жёстко забивать весию в приложухе (ещё и проверять её, и вываливать эксепшен, если вдруг версии не равны) и тащить либу в GAC. При этом ещё в регистре виндовс жёстко фиксится путь к тулзе gacutil.exe. А это значит - жёсткая привязка к определённому SDK (т.к. к каждому SDK своя утилита идёт). Короче, всё жёстко и захардкожено. И чтобы ещё всё это дерьмо установить, пишутся тонны кода - залезть в реестр, вызвать gacutil, скопировать файлы туда-сюда (жонглирование кучей относительных и абсолютных путей - не дай бог где-то не совпадёт часть пути) и т.д. Целый класс, блин, накатан в сотни строк, который всё это проверяет, таскает, регает и устанавливает.
Открываешь на другой машине - нихера не работает, высыпается куча ошибок. Ну да - надо же понаставить все определённые SDK нужных версий, даже если это старое ненужное дерьмо.
Правда, этот проект был написан во времена, когда Нюгета не было. Это может служить оправданием?
Зачем? Всё свое тащу с собой.
Я когда свою кружку на работу притащил, на меня удивлённо посмотрели - зачем, мол, у нас же на кухне посуда есть.
И в России на фирме одной тоже не поняли.
И я не понял - как это, пить из чужих кружек?
Как пьют, так и с либами обращаются. С другого острова, понимаешь.
))
Как вы относитесь желанию разраба тащить и регать в GAC
GAC хорошая придумка. Вот только пользоваться GAC'ом как-то не очень научились. От этого он доставляет больше проблем, чем пользы :D
либы типа известных логгеров
Вот именно для этого GAC и придумали.
юнит тестов
А тестам в GAC'е делать нечего.
прочих утилит
Как и утилитам.
Не через Нюгет там внедрять в проекты и отслеживать версионность, а жёстко забивать весию в приложухе (ещё и проверять её, и вываливать эксепшен, если вдруг версии не равны) и тащить либу в GAC.
Этого я не понял. Nuget - инструмент разработчика, ему нечего делать на клиентской системе. Использование строгих имен бывает оправданым.
При этом ещё в регистре виндовс жёстко фиксится путь к тулзе gacutil.exe.
Не знаю зачем это может понадобиться :)
И чтобы ещё всё это дерьмо установить, пишутся тонны кода
Это из-за того, что люди в каменном веке и еще не открыли для себя WiX :D В каменном веке кругом боль и страдание :D
Открываешь на другой машине - нихера не работает, высыпается куча ошибок. Ну да - надо же понаставить все определённые SDK нужных версий, даже если это старое ненужное дерьмо.
Не совсем понимаю, что открываешь? Проект? Или финальную программу? Если проект на компе разработчика, то это не проблема ИМХО. Нужен просто чек-лист с необходимыми пререквизирами. Ну или перейти на Nuget. Если речь о финальной программе, то она всегда должна устанавливаться инсталлятором. Никаких копирований. Ну или надо заморочиться и написать программу так, чтобы ее можно было переносить копированием (т.е. не использовать реестр и файловую систему за пределами папки с exe'шником)
Это может служить оправданием?
Нет.
не говори, что за люди?
Никакого понятия о зашкваре))
Вы чужую сигаретку изо рта в рот берёте? А бычки незнакомые поднимаете докурить? Из чужих стаканов пьёте? А зачем?
Не в случае, когда нет выбора, а именно когда выбор есть, но сознательно выбирают ползоваться общей посудой на постоянной основе. Не в гости один раз пришёл.
Не через Нюгет там внедрять в проекты и отслеживать версионность, а жёстко забивать весию в приложухе (ещё и проверять её, и вываливать эксепшен, если вдруг версии не равны) и тащить либу в GAC.Этого я не понял. Nuget - инструмент разработчика, ему нечего делать на клиентской системе. Использование строгих имен бывает оправданым.
Я имел ввиду, вот есть у вас солюшен с кучей проектов. И на каждый надо подключить тулзу для юнит тестов или логирования. Будете регать эти тулзы в GAC и брать всеми проектами оттуда, или через нюгет на солюшен поставите на нужные проекты? Для меня, как для разраба, второй путь куда проще. А с GAC возиться надо сначала у себя на машине - регать всё это. Потом на машине клиента.
При этом ещё в регистре виндовс жёстко фиксится путь к тулзе gacutil.exe.Не знаю зачем это может понадобиться :)
Ошибся малость. Фиксится путь к конкретному SDK - т.е. там и название, и версия. Ну а SDK при установке пишет путь к себе в реестре. Прога туда лезет, читает пусть установки и хочет юзать только эту версию этой тулзы (gacutil). Суть тут в привязке к конкретной версии и подверсии SDK. Если она обновилась (было х.0, а стало х.2, например), то всё - в реестре другой путь и прога выдаёт исключение.
Я имел ввиду либы всех этих библиотек.
Далеко не все либы имеет смысл пихать в GAC.
Опять же, GAC - центральное место для хранения библиотек, соответственно и устанавливаться и менеджериться там они должны централизованно. MS для этого придумали merge modules. Т.е. ты делаешь merge module и потом вставляешь его во все свои истралляторы. В этом случае у тебя будет централизованное управление (этим займется MSI). Если же ты в каждый продукт будешь встраивать какие-то сборки и пихать их в GAC, то у тебя будет каша и рано или поздно наступит всей этой конструкции трындец :D
Это из-за того, что люди в каменном веке и еще не открыли для себя WiX :D В каменном веке кругом боль и страдание :D
Вот Викс и есть боль и страдания. Нормальные люди юзают
https://github.com/oleg-shilo/wixsharp
https://www.codeproject.com/Articles/31407/Wix-WixSharp-ma...
Я пробовал (давно) - мне больше понравилось, чем голый Викс. Уже одни подсказки Интеллисенс значительно облегчают работу. На тот момент были лишь маленькие вопросы с неточными соответствиями названий некоторых элементов в Виксе и в Виксшарпе.
Я не знаю, нахрена был придуман Викс на XML. Какой-то отдельной должности "мастер по Викс и XML" в фирмах нет - всё равно всё фигачат обычные разрабы-кодеры. А им проще с кодом общаться. Нет, блин, всё заточили опять на XML, но при этом любой шаг в сторону от столбовой дороги - городи расширяющие модули с кодом. Т.е. гипотетический "мастер по Викс и XML" всё равно должен уметь кодить - т.е. всё равно инсталлятор будет делать обычный разраб-кодер. Так сделайте сразу всё в коде.
По-моему, это было сделано для совместимости с ещё более дремучей и муторной вещью - MSBuild. Так что какие-то сложные инсталляторы народ делал тупо спецприложением (те же Формы или WPF) и делал всё опять в привычном для себя коде.
Опять же, GAC - центральное место для хранения библиотек, соответственно и устанавливаться и менеджериться там они должны централизованно.
Может, этим любят корпораты баловаться? Типа у нас есть централизованный дистриб, где фиксированы все либы? - Вот только ими мол и пользуйтесь. Даже разрабы не могут скачать или обновить какую-нибудь либу, пока не будет согласовано с центральными админами и они не соизволят включить новую либу или новую версию в общий дистриб... Но тогда зачем регать в GAC - оно же уже должно быть зарегано.
Как делали до появления нюгета - до 2010 года? Насколько я помню, либа просто скачивалась куда-нибудь на диск и оттуда копировалась к себе в проект (в зависимостях проекта выбирал эту либу и она копировалась к тебе). Т.е. можно было иметь свой "склад" с либами и оттуда копировать. Опять же, при билде все либы копировались в bin к экзешнику, а при деплое просто переносились на машину клиента вместе с экзешником. Но тащить при этом в GAC всё равно не было обязательно.
Там суть проекта такая. Он состоит из многих проектов - сервисы, сайты, десктопные проги. И всё это ставится одним инсталлятором. При разработке некоторые сторонние либы берутся со "склада" (просто директория с либами), а при установке - копируются и регаются в GAC. Нафига - не понял. Можно же перенести этот "склад" на машину клиента и пользовать оттуда. А можно просто использовать копии этих либ, скопированные при билде в папки к экзешникам - ничего не поменяется. Всё равно при обновлении будет сделан новый инсталлятор, и если в проекте всё централизовано, то инсталлятор добавит хоть и новую, но одну и ту же версию либы к каждому проекту (сайт, декстоп, сервис и т.д.). Поэтому регать в GAC всё равно не вижу смысла - просто лишняя возня, тонны кода и тестов, и всё равно это дерьмо не работает нормально, если кто-то где-то что-то захардкодил.