Existem três opções diferentes de permission_set que restringem o que o assembly pode fazer
SAFE
- Restringe o assembly ao código gerenciado EXTERNAL_ACCESS
- permite o acesso a arquivos, recursos de rede, etc. UNSAFE
- Acesso irrestrito - incluindo a execução de código não gerenciado MSDN docs fornecem as seguintes orientações
Se o seu assembly usa apenas recursos do .NET 3.5, não vejo por que ele precisaria de
UNSAFE
Acesso. É possível que você esteja usando um dos tipos ou membros não permitidos da biblioteca System.Core. A Microsoft tem uma lista deles. Tipos e membros não permitidos em System.Core.dll
Tem mais algumas informações aqui. Atributos de proteção de host e programação de integração CLR