Что вы описываете, это не проблема, которую CAS разработал для решения. Система безопасности .NET Code Access Security была разработана для защиты доброжелательных пользователей от вражеский код третьей стороны. Вы пытаетесь сделать обратное - защитите доброжелательный код от враждебных пользователей. Если вы дадите кому-то кусок кода, они могут делать все, что захотят, с этим кодом - разобрать его, переписать, перекомпилировать, что угодно, и вы не можете сделать технически, чтобы остановить их.
Возможно, лучше всего использовать другие механизмы правоприменения, например, заставить их подписать контракт, в котором говорится, что они не будут перепроектировать или перераспределить ваш код, а затем подать в суд на них, если они это сделают. Или просто не дайте им код в первую очередь. Сделайте веб-сервис и сохраните код на своем сервере, вдали от людей, которым вы не доверяете.
[Я нашел аналогичный вопрос с ответами] (http://stackoverflow.com/questions/1416190/restrict-access-to-net-assembly). – Shimmy