А вы знали что можно распространять NuGet пакет чисто с исходниками, вместо заранее прекомпилированных бинарников (dll)?
Оказывается так можно сделать, хоть это и не афишируется официально.
Andrew Lock об этом довольно подробно рассказывает с примерами как такой пакет можно сделать.
Плюсы распространения библиотек в виде исходного кода:
- отсутствие зависимости: все исходники в пакете как будто написаны вами и компилируются вместе с вашим кодом (собственно так обычно работает npm, когда подгружает node_modules)
- есть возможность использовать несколько разных версий таких пакетов в одном проекте. В случае с готовыми dll всегда может быть только одна версия
- отсутствие ошибок в рантайме из-за того что кто-то например ожидает версию 5, а в верхних слоях установлена 7ая и в финальную сборку попала 7ая версия, а часть кода пытается работать с API от 5ой, которой уже нет. Это довольно частая проблема из-за транзитивных зависимостей.
Минусы:
- данный код необходимо компилировать. Если все пакеты делать таким образом, время билда может вырасти
- фича неофициальная и может измениться в будущем
Я еще не пробовал, но вероятно, такой пакет подойдет для различных утилит, атрибутов и прочего, что обычно копируется из проекта в проект :)
Оказывается так можно сделать, хоть это и не афишируется официально.
Andrew Lock об этом довольно подробно рассказывает с примерами как такой пакет можно сделать.
Плюсы распространения библиотек в виде исходного кода:
- отсутствие зависимости: все исходники в пакете как будто написаны вами и компилируются вместе с вашим кодом (собственно так обычно работает npm, когда подгружает node_modules)
- есть возможность использовать несколько разных версий таких пакетов в одном проекте. В случае с готовыми dll всегда может быть только одна версия
- отсутствие ошибок в рантайме из-за того что кто-то например ожидает версию 5, а в верхних слоях установлена 7ая и в финальную сборку попала 7ая версия, а часть кода пытается работать с API от 5ой, которой уже нет. Это довольно частая проблема из-за транзитивных зависимостей.
Минусы:
- данный код необходимо компилировать. Если все пакеты делать таким образом, время билда может вырасти
- фича неофициальная и может измениться в будущем
Я еще не пробовал, но вероятно, такой пакет подойдет для различных утилит, атрибутов и прочего, что обычно копируется из проекта в проект :)