Je souhaite écrire une petite application d'installation qui installe un site Web et crée des répertoires virtuels IIS. L'application devrait fonctionner sur Windows XP/Server 2003 (IIS 6) ainsi que sur Vista/2008 (IIS 7). Le problème est le suivant: pour IIS 6, nous créons des répertoires virt en appelant l'API WMI/Metabase. Pour IIS 7, il existe une API bien meilleure: Microsoft.Web.Administration, mais son assemblage n'est disponible que sur les systèmes IIS 7.Quand le CLR essaie-t-il de charger un assembly référencé?
approche Naive:
...
if (OperatingSystem == old)
{
call metabase API...
}
else
{
call Microsoft.Web.Administration...
}
...
Nice, est-ce pas? Mais comment puis-je m'assurer que cela ne plante pas sur un ancien système juste en essayant de charger la DLL Microsoft.Web.Administration? Ou est-ce qu'un assemblage vient d'être chargé, quand il est utilisé pour la première fois? Lorsqu'une méthode qui appelle dans l'assembly est d'abord utilisée?
Je suppose que le test n'aide pas sans un certain déterminisme garanti par les spécifications CLR/.NET.
Je suis vraiment impatient d'entendre vos expériences, des conseils ou des solutions pour ce sujet. Je n'ai rien trouvé d'utilisable sur le web jusqu'à présent.