никаких расширений не надо, всего лишь считать последние 128 байт файла — строка должна начинаться словом «TAG»Совершенно не обязательно. Это верно только в случае тегов ID3v1. В случае ID3v2, файл начинается сигнатурой «ID3» и может не содержать тегов ID3v1.
BIT(M) approximately (M+7)/8 bytesПри M < 9 это будет 1 байт, поскольку речь идет о целочисленном делении (которое всегда с округлением вниз). В случае 4 бит: (4+7)/8=11/8 = 1 байт.
SET('value1','value2',...) 1, 2, 3, 4, or 8 bytes, depending on the number of set membersОдин элемент SET'а — это тоже 1 бит. Поэтому 64 элемента занимают 8 байт, 32 элемента — 4 байта, а 4 элемента — 1 байт. Подробнее: тут и тут.
99.9% что не будет добавляться новых параметров.Однако, к счастью, даже в случае 30 битов есть выход, правда существенно менее скорострельный, поскольку требует полного сканирования таблицы:
SELECT * FROM table WHERE bits & mask = mask
Это почти полностью эквивалентно использованию типа SET. SELECT * FROM table FORCE INDEX(bits) WHERE bits IN (...)
Evidence hostEvidence = new Evidence();
hostEvidence.AddHost(new Zone(SecurityZone.Intranet));
hostEvidence.AddHost(new Url("ваш_uri_без_имени_файла"));
Тогда в первом параметре можно опустить путь к сборке.