Je voudrais pouvoir obtenir la version de fichier et la version d'assemblage de tous les fichiers DLL dans un répertoire et dans tous ses sous-répertoires. Je suis novice en programmation et je n'arrive pas à comprendre comment faire fonctionner cette boucle.Obtenir la version de fichier et la version d'assemblage des fichiers DLL dans le répertoire courant et tous les sous-répertoires
Je possède ce code PowerShell pour obtenir la version de montage (tiré d'un forum):
$strPath = 'c:\ADMLibrary.dll'
$Assembly = [Reflection.Assembly]::Loadfile($strPath)
$AssemblyName = $Assembly.GetName()
$Assemblyversion = $AssemblyName.version
Et cela aussi:
$file = Get-ChildItem -recurse | %{ $_.VersionInfo }
Comment puis-je faire une boucle de cette façon que je peux retourner la version d'assemblage de tous les fichiers dans un répertoire?
Cela fonctionne, mais malheureusement, il charge les fichiers et ne les libère ... Exécuter et puis essayer de supprime un de ces fichiers. –
C'est en effet un inconvénient. Vous pouvez contourner ceci en générant une nouvelle instance de PowerShell: 'powershell -NoProfile -OutputFormat XML -EncodedCommand $ encodedCommand |% {$ _}' avec $ encodedCommand étant la variante codée en Base64 de l'extrait ci-dessus (voir 'powershell /? 'pour un échantillon comment l'obtenir). Cela donnera les mêmes objets qui seraient autrement produits, mais le shell qui charge les fichiers n'est plus en vie maintenant. – Joey
J'essaye de charger les assemblys dans le nouveau AppDomain et de le décharger plus tard, mais cela ne fonctionne pas - le chargeur d'assembly recherche des assemblys dans le répertoire PowerShell (C: /windows/system32/WindowsPowerShell/v1.0) même si je mets le répertoire de base lors de la création du nouveau domaine ... –