Сценарий ps1 должен l oop просмотреть сборки в папке / bin, извлечь атрибуты и затем создать файл json со совпадениями. Это все работает для 99% DLLS.
Но одна DLL была построена со ссылкой на старую сборку
Exception calling "GetCustomAttributes" with "1" argument(s): "Could not load file or assembly
'Telerik.Sitefinity.Frontend, Version=12.2.7200.0, Culture=neutral, PublicKeyToken=b28c218413bdf563' or one of its
dependencies. The system cannot find the file specified."
Версия в папке 12.2.7225.0
Так эта сборка в основном пропускается ...
Это не проблема, когда веб-приложение запускается, потому что привязка сборки web.config просто прекрасно обрабатывает несоответствие версий, но в powershell это танкование.
param(
[Parameter(Mandatory=$true)]
[string]$binariesDirectory
)
$assemblies = Get-ChildItem $binariesDirectory -Filter *.dll
$controllerAssemblies = @()
foreach ($assembly in $assemblies) {
$loadedAssembly = [System.Reflection.Assembly]::LoadFrom($assembly.FullName)
#THIS IS THE TEST
if($assembly.Name -eq "RandomSiteControlsMVC.dll"){
Write-Output "Custom Attributes for " + $assembly.Name;
#THIS IS WHAT FAILS
$result = [reflection.customattributedata]::GetCustomAttributes($loadedAssembly)
Write-Output $result;
}
#$loadedAssembly.CustomAttributes just returns nothing in the case of that DLL
if ($loadedAssembly.CustomAttributes | ? { $_.AttributeType.FullName -eq "Telerik.Sitefinity.Frontend.Mvc.Infrastructure.Controllers.Attributes.ControllerContainerAttribute" -or $_.AttributeType.FullName -eq "Telerik.Sitefinity.Frontend.Mvc.Infrastructure.Controllers.Attributes.ResourcePackageAttribute"}) {
$controllerAssemblies += $assembly.Name
}
}
$controllerAssemblies | ConvertTo-Json -depth 100 | Set-Content "$binariesDirectory\ControllerContainerAsembliesLocation.json" -Force
Есть ли какой-нибудь волшебный способ, которым это могло бы просто сработать без того исключения?