una traves todos subprocesos subproceso seguras requiere realizar que para otro metodo los llamó llamar llamadas interfaz función framework formularios evaluación ejecuten diferente desde controles control como checkforillegalcrossthreadcalls aplicación aplanó acceder c# .net unity-container uwp .net-native

c# - traves - UnityContainer.Resolve se bloquea cuando la cadena de herramientas Native.NET está habilitada



metodo invoke c# (0)

Tenemos una aplicación Windows 10 UWP que se ejecuta correctamente en las compilaciones y bloqueos de depuración en compilaciones de Release. Lo que ocurre con las versiones de lanzamiento que lo hacen estrepitoso es que la cadena de herramientas nativas .NET está habilitada, lo que permite que la aplicación se ejecute. Pero eso no es una solución real, ya que necesita ejecutarse con la cadena de herramientas Native .NET si tiene la intención de publicar en la tienda.

Usamos Microsoft.Practices.Unity para DI. Aquí hay un ejemplo de cómo registramos algunas clases:

container.RegisterType<IBoardView, BoardView>();

Y luego, en nuestra aplicación lo resolvemos de la siguiente manera:

container.Resolve<IBoardView>();

Funciona bien a menos que lo ejecute con .NET Native, en cuyo caso obtengo la siguiente excepción:

Se produjo una excepción de tipo ''Microsoft.Practices.Unity.ResolutionFailedException'' en Microsoft.Practices.Unity.dll pero no se manejó en el código de usuario

Información adicional: Falló la resolución de la dependencia, type = "WindowsUniversal.ViewModels.Interfaces.IBoardViewModel", name = "(none)".

La excepción ocurrió mientras: mientras se resolvía.

Y en la ventana de salida obtengo:

Excepción lanzada: ''System.NullReferenceException'' en System.Linq.Expressions.dll

Excepción lanzada: ''System.NullReferenceException'' en Microsoft.Practices.Unity.dll

Excepción lanzada: ''Microsoft.Practices.Unity.ResolutionFailedException'' en Microsoft.Practices.Unity.dll

Se produjo una excepción de tipo ''Microsoft.Practices.Unity.ResolutionFailedException'' en Microsoft.Practices.Unity.dll pero no se manejó en el código de usuario

Información adicional: Falló la resolución de la dependencia, type = "WindowsUniversal.ViewModels.Interfaces.IBoardViewModel", name = "(none)".

La excepción ocurrió mientras: mientras se resolvía.

La excepción es: NullReferenceException: la referencia del objeto no está configurada para una instancia de un objeto.

En el momento de la excepción, el contenedor era:

Resolución de WindowsUniversal.ViewModels.Interfaces.IBoardViewModel, (ninguno)

Todo esto funciona en Debug o Release cuando .NET Native está deshabilitado. Ahora sé que .NET Native tiene sus limitaciones, la reflexión es uno de ellos. ¿Supongo que estoy preguntando cómo solucionar esto?

Cualquier idea sería muy apreciada, gracias.