Не удалось найти XML-файл в указанном расположении
Поиск и удаление "битых" решений (solutions) в SharePoint 2010, из-за которых возникают примерно вот такие ошибки:
Не удалось найти XML-файл в указанном расположении: '14\Template\Features\FetureDir\feature.xml'
Или по-английски вот такие:
Failed to find the XML file at location: '14\Template\Features\FetureDir\feature.xml'
Решение
Смысл решения заключается в следующем: мы перебираем все фичи (feature), пробуем получить какое-нибудь свойство этой фичи, заставляя тем самым SharePoint считать данные из файла-определения фичи (feature.xml). В случае возникновения исключения мы удаляем эту фичу.
Фичи на уровне фермы
"Битые" фичи на уровне фермы можно удалять примерно так:
// Получаем локальную ферму
var farm = SPFarm.Local;
// Перебираем фичи
foreach (var featdef in farm.FeatureDefinitions)
{
try
{
// Пробуем получить Title
featdef.GetTitle(System.Threading.Thread.CurrentThread.CurrentCulture);
}
catch
{
// Удаляем фичу
featdef.Delete();
}
}
Фичи на уровне коллекции сайтов
В случае с коллекцией сайтов мы поступаем аналогично:
using (var site = new SPSite(siteUrl))
{
// Перебираем фичи
foreach (var featdef in site.FeatureDefinitions)
{
try
{
// Пробуем получить Title
featdef.GetTitle(System.Threading.Thread.CurrentThread.CurrentCulture);
}
catch
{
// Удаляем фичу
featdef.Delete();
}
}
}
PowerShell
И напоследок PowerShell-скрипт для удаления "битых" фич (feature)
Foreach ($feature in Get-SPFeature)
{
try
{
$featureTitle = $feature.GetTitle(1033)
}
catch
{
$feature.Delete()
}
}