2009-02-16 18 views
1

Je sais que les applications .NET agnostiques de plate-forme "flottent" à la bonté du système d'exploitation. Mais qu'en est-il d'un assembly .NET qui est une bibliothèque, pas un exécutable, appelé à partir d'une application non-NET?Plate-forme agnostique bit .NET - à partir d'un système d'exploitation ou d'une application d'appel?

Nous avons une DLL .NET qui est une procédure stockée étendue CLR pour SQL Server 2005. Actuellement, elle est indépendante de la plate-forme. Que se passe-t-il lorsque la procédure stockée étendue est appelée à partir d'une instance SQL Server 32 bits exécutée sur Windows 64 bits?

Répondre

1

Cela dépend de la cible pour laquelle l'assembly a été compilé. Si vous avez sélectionné "Any CPU" ou "x86" dans les options de construction du projet, la DLL doit s'exécuter en tant qu'instance 32 bits. Si vous avez sélectionné "x64", il lèvera une exception (BadImageFormatException de la mémoire). Sous Windows 32 bits, les processus ne peuvent pas charger les DLL 64 bits. Par conséquent, SQL Server exécute une version 32 bits de l'exécution .net dans son processus. Donc votre assembly .net fonctionnera aussi en 32 bits même sur une machine 64 bits.