CAS в значительной степени то, что вам нужно здесь. В частности, вы хотите загрузить сборку в свой собственный домен приложения:
var myEvidence = new Evidence(new object[] {SecurityZone.Internet});
var newDomain = AppDomain.CreateDomain("InternetDomain");
myDomain.Load("MyUntrustedAssembly.dll", myEvidence);
myDomain.CreateInstanceAndUnwrap("MyUntrustedAssembly","MyUntrustedObjectType");
//do your work with the untrusted assembly/type
AppDomain.Unload(myDomain);
Ознакомьтесь с доменами приложений, различными зонами и назначенными им наборами разрешений по умолчанию. Интернет является наиболее ограниченным из доступных системно-определяемых зон / наборов разрешений, в которых сборки все еще могут выполняться (есть также зона с ограничениями; сборки, попадающие в эту зону, не могут работать). Вы можете использовать инструмент .NET Configuration для создания наборов разрешений и определения условий (свидетельств), которым должен удовлетворять код, чтобы получить набор разрешений.