Vorrei poter ottenere la versione del file e la versione di assembly di tutti i file DLL all'interno di una directory e di tutte le sue sottodirectory. Sono nuovo alla programmazione e non riesco a capire come far funzionare questo ciclo.Ottenere la versione del file e la versione di assembly dei file DLL nella directory corrente e tutte le sottodirectory
Ho questo codice PowerShell per ottenere la versione di assembly (preso da un forum):
$strPath = 'c:\ADMLibrary.dll'
$Assembly = [Reflection.Assembly]::Loadfile($strPath)
$AssemblyName = $Assembly.GetName()
$Assemblyversion = $AssemblyName.version
E anche questo:
$file = Get-ChildItem -recurse | %{ $_.VersionInfo }
Come posso fare un ciclo di questo in modo che posso restituire la versione di assemblaggio di tutti i file all'interno di una directory?
Questo funziona, ma purtroppo carica i file e non li rilascia ... Esegui e quindi provare a cancella uno di quei file. –
Questo è davvero un inconveniente. È possibile aggirare questo problema creando una nuova istanza di PowerShell: 'powershell -NoProfile -OutputFormat XML -EncodedCommand $ encodedCommand |% {$ _}' con '$ encodedCommand' è la variante codificata Base64 dello snippet sopra riportato (vedere' powershell /? 'per un esempio su come ottenerlo). Ciò produrrà gli stessi oggetti che altrimenti verrebbero prodotti, ma la shell che carica i file non è più attiva ora. – Joey
Sto provando a caricare gli assembly in AppDomain nuovo e a scaricarlo in seguito, ma non funziona: il caricatore dell'assembly cerca gli assembly nella directory di PowerShell (C: /windows/system32/WindowsPowerShell/v1.0) anche se ho impostato il directory di base durante la creazione del nuovo dominio ... –