2011-06-13 8 views

Respuesta

10

Bueno, como casi descubriste; no puedes hacerlo El diseño no le permite cargar un ensamblaje que no se envía en su XAP. Este es un diseño de seguridad, ya que no quieren que descargue y ejecute código arbitrario que no haya pasado la Inspección de Marketplace.

Esto está a la par con la forma en que Apple controla su App Store. Por qué esta funcionalidad no está allí, y por qué dudo que se agregará:

  1. Marketplace. Microsoft requiere que todas las aplicaciones pasen una inspección de Blackbox. Es probable que busquen varias cosas, como el rendimiento, los principales errores, el material atrevido y la coherencia de la interfaz de usuario. Permitir que un desarrollador cargue y ejecute cualquier ensamblaje elude por completo el mercado. Eso lastima al usuario de varias maneras. La primera es que un desarrollador estaría tentado de usarlo como medio de distribución de actualizaciones fuera del Marketplace, o de infiltrarse en características (como pornografía) que Microsoft no permite en su Marketplace.
  2. Seguridad. Poder cargar un ensamblaje es una característica poderosa, que puede ser buena o mala. Si un desarrollador lo implementó incorrectamente, podría ser posible explotarlo. En segundo lugar, podría haber sido una limitación técnica (o limitación de tiempo) en Microsoft sobre cómo afectaría el espacio aislado de las aplicaciones. O peor, una aplicación aparentemente inofensiva descarga un ensamblaje diferente después de que ya pasó la inspección, y luego comienza a hacer algo infame; como el registro de teclas y subirlo a alguna parte. Debido a que dio la vuelta al mercado, Microsoft nunca habría podido atraparlo antes de llegar al público.

Lo que puede hacer, como DO sugerido en los comentarios, es hacer las asambleas como parte de su XAP, y utilizar uno de los Assembly.Load sobrecargas que permiten cargar por su nombre. Usted puede cargar dinámicamente los ensambles, solo tienen que ser parte de su XAP.

+1

Creo que su respuesta es correcta. pero es miope simplemente eliminar esa funcionalidad. Hay muchos casos en los que las personas pueden querer enviar ensamblajes como un recurso incrustado y luego seleccionar y elegir, en tiempo de ejecución, qué cargar. – Simon

+0

Simplemente envíelos todos en el XAP sin incrustarlos en un ensamblaje y cárguelos cuando sea necesario. –

+3

@Simon Sí, estoy de acuerdo, pero creo que finalmente fue la decisión correcta para Microsoft. Hay demasiados aspectos negativos (para los usuarios finales) asociados con ese tipo de funcionalidad. – vcsjones

Cuestiones relacionadas