Во время установки nuget я даю пользователю команду, которую он может запустить.Эта команда в основном сканирует некоторые файлы и создает несколько шаблонов кода, а затем вставляет их в текущий проект.Это работает просто отлично - за исключением того факта, что Solution Explorer не обновляет свое древовидное представление новыми файлами.Я знаю, что это работает, потому что я могу выгрузить и перезагрузить файл проекта, и файлы есть.
В случае, если это поможет, вот код, который я использую для добавления файлов в проект - вторая функция - это то, чтопользователь фактически звонит.
function add-to-project ($itemType, $project)
{
process
{
$bogus = $project.Xml.AddItem($itemType, $_)
}
}
# Parse a file
function Write-TTree-MetaData ($Path = $(throw "-Path must be supplied"))
{
$p = Get-Project
Write-Host "Inserting the results of the parsing into project" $p.Name
$ms = Get-MSBuildProject
$destDir = ([System.IO.FileInfo] $p.FullName).Directory
# Run the parse now
CmdTFileParser -d $destDir.FullName $Path
# Now, attempt to insert them all into the project
$allFiles = Get-ChildItem -Path $destDir.FullName
$allFiles | ? {$_.Extension -eq ".ntup"} | add-to-project "TTreeGroupSpec" $ms
$allFiles | ? {$_.Extension -eq ".ntupom"} | add-to-project "ROOTFileDataModel" $ms
# Make sure everything is saved!
$ms.Save()
$p.Save()
}
Этот код вызывает всплывающее забавное диалоговое окно - «Проект был изменен на диске - пожалуйста, перезагрузите» - и, надеюсь, пользователь перезагрузится, и затем файлы будут отображаться правильно... Но было бы неплохо избежать этого и просто сделать так, чтобы сценарий вызвал все, что нужно.Возможно, мне нужно выяснить, как выгрузить и повторно загрузить проект?
Что мне нужно сделать, чтобы принудительно обновить обозреватель решений?Большое спасибо!