2011-10-07 27 views
13

Recibo advertencias extrañas de Visual Studio 2008 al compilar una aplicación C# ASP.NET. ¿Podría alguien señalarme una explicación (en palabras de pocas sílabas, si es posible) de lo que significa esta advertencia?¿Qué significa "no se puede calcular mediante el contador de tiempo de ejecución"?

Al menos uno de los argumentos para 'IasHelper.Process' no se pueden calcular las referencias por el contador de tiempo de ejecución. Dichos argumentos, por lo tanto, serán pasados ​​como un puntero y pueden requerir la manipulación de un código inseguro.

Respuesta

9

La clase Marshal es responsable de convertir código/clases no administradas a clases administradas y viceversa. Ver the msdn documentation of the Marshal Class.

Si incluye algún conjunto de interoperabilidad para acceder al objeto COM o tal, puede suceder que el Marshal (l) er no pueda encargarse de la operación. Por lo tanto, tiene partes casi no administradas que se ejecutan en su programa, lo que a su vez puede ocasionar cosas desagradables como sobrepagos de almacenamientos intermedios y demás. De ese modo, abandonan el mundo seguro y acogedor del código administrado y entran en el reino peligroso y turbulento de C/C++ y sus temidos hermanos. :-)

+1

Gracias. Esa referencia está vinculada a (http://justlikeamagic.com/2010/03/09/marshaling/) que es exhaustiva. –

7

Parece que está haciendo referencia a un objeto ActiveX y le da a tlbimp.exe un momento difícil para reunir los argumentos de algunos de los métodos y miembros de la estructura entre COM y .NET.

esto tal vez ocurra durante construcciones limpias ya que es el único momento en que tlbimp tiene que funcionar. Intenta hacer una construcción normal donde no limpiaste primero.

+0

Gracias por eso. Acabo de tropezar con este hilo (http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/92cc0495-729b-40be-a49c-00676c21b8e3) donde un compañero tenía el mismo problema. Bastante preocupante, ¿no? –

Cuestiones relacionadas