2009-09-12 16 views
6

¿Hay alguna manera de tener un ensamblado .NET accesible solo para las fuentes autorizadas?¿Restrinja el acceso al ensamblado de .NET?

Quiero decir que quiero tener una DLL que contenga componentes, pero no quiero que nadie pueda usar estos componentes sino los otros EXEs de las DLL en mi solución. Aunque quiero que estén en archivos DLL separados.

La restricción en el espacio de nombres también puede ser una buena idea si esta característica existe.

¿Hay alguna manera?

+0

está utilizando la lista de control de acceso del sistema operativo, ¿está bien? Obtenga al usuario y verifique el acceso a algún archivo conocido, dir, etc. ... – kenny

+0

SE ACEPTA CUALQUIER COSA, publique una respuesta de su idea para que la gente pueda votar. – Shimmy

Respuesta

6

Puede crear clases internas. Y otorgue a sus ensamblados especificados acceso a estas clases utilizando el atributo InternalsVisibleTo.

El conjunto debe ser fuerte. Puede encontrar más información sobre el atributo en this article.

+0

Véase también http://www.bryancook.net/2008/05/tdd-tips-internalsvisibleto-keep-your.html – TrueWill

5

El problema con las clases internas es interno no tiene significado en IL y las clases se pueden llamar mediante reflexión. Entonces, usar InternalsVisibleTo es más una ayuda para el compilador que otra cosa.

Puede ir un paso más allá usando StrongNameIdentityPermission, que comprobará la clave pública de la convocatoria llamada ensamblado fuerte en el código: si la clave pública no coincide, se lanza una excepción de seguridad. Esto se aplica incluso cuando el código se llama mediante reflexión.

Cuestiones relacionadas