Компьютеры не умны, они сделают то, что Вы даете им команду делать. Компиляторы могут оптимизировать, кодируют немного для Вас, но они не могут оптимизировать алгоритмы. Человеческий мозг работает по-другому, и именно поэтому необходимо понять Большой O. Рассмотрите вычисление Чисел Фибоначчи. Все мы знаем F (n) = F (n-1) + F (n-2), и запускающийся с 1,1 можно легко вычислить следующие числа без особых усилий в линейное время. Но если бы Вы говорите компьютеру вычислять его с той формулой (рекурсивно), это не было бы линейно (по крайней мере, на императивных языках). Так или иначе наш мозг оптимизировал алгоритм, но компилятор не может сделать этого. Так, Вы имеете к работа на алгоритм для создания его лучше.
И затем, Вам нужно обучение, для определения мозговой оптимизации, которая выглядит настолько очевидной, для наблюдения, когда код мог бы быть неэффективным, для знания шаблонов для плохих и хороших алгоритмов (с точки зрения вычислительной сложности) и так далее. В основном те курсы служат нескольким вещам:
Отказ от ответственности: я работаю в компании, которая производит Dotfuscator.
Могут быть другие альтернативы, о которых я не знаю, но я почти уверен, что ILMerge этого не делает.
Альтернативой было бы использование Dotfuscator Pro, коммерческого продукта, который, как я знаю наверняка, будет правильно связывать вместе сборки и правильно связывать любые вспомогательные сборки ресурсов для набора входных сборок. Доступна бесплатная пробная версия, чтобы вы могли протестировать ее и убедиться, что она работает в вашем конкретном сценарии.
Согласно одному из комментариев здесь , если вы готовы отказаться от intellisense или, возможно, сохранить отдельную параллель msbuild, вы можете сделать свои DLL "сетевыми модулями". Этот курс предполагает, что у вас есть исходный код для ваших DLL.
Я задал свой вариант этого вопроса и в конце концов получил/реализовал ответ: Развертывание одной сборки на нескольких языках Windows Forms (ILMerge и спутниковые сборки / локализация) - возможно?
Надеюсь, это поможет.