Я вижу несколько проблем с тем, чего вы пытаетесь достичь.
1) Как уже упоминалось @Mehrdad, сборка все еще требуется для метаданных, даже если существует собственное изображение.
2) Собственный образ действителен только на том компьютере, на котором он был скомпилирован. JIT-компилятор выполняет оптимизацию, которая обычно не может быть выполнена, потому что он точно знает, на каком оборудовании должен работать код.
3) Даже собственное изображение может быть декомпилировано. Просто немного проще взять appart управляемого dll.
Не могли бы вы сказать нам, почему вы хотите скрыть свой исходный код?
EDIT:
Судя по тому, как быстро каждая новая версия WGA будет взломана, я подозреваю, что если ваше программное обеспечение будет удаленно полезным, у кого-то будет ключ и Интернет (или p2p или любой другой) в течение нескольких часов после каждой новой версии вашего программного обеспечения, и они будут люди, которые с удовольствием разбирают родной образ. Или, может быть, просто прочитайте машинный код:)
Мой личный подход - убедиться, что ваше приложение работает хорошо и по справедливой цене. Честные люди не украдут его, нечестные найдут выход независимо от того, что вы делаете. В конечном счете, если у вас есть приложение для запуска, вы ничего не можете сделать, чтобы полностью контролировать то, что они с ним делают, хотя вы можете немного затруднить им использование отражателя, сначала используя обфускатор, но, в конце концов, это так же, как в реальной жизни. на самом деле, замки только не пускают честных людей.
Конечно, если вы можете переместить некоторую важную часть функциональности ваших приложений из клиента в веб-сервис, у вас больше шансов. Вы можете создавать учетные записи с именами пользователей и паролями для клиентов, приложение запрашивает это при запуске и использует его для аутентификации в веб-службе. Если срок их использования этого приложения истек, веб-служба отклоняет их запрос.