nugetのインストール中に、ユーザーが実行できるコマンドをユーザーに提供します。このコマンドは基本的にいくつかのファイルをスキャンし、いくつかのコードテンプレートを作成してから、それらを現在のプロジェクトに挿入します。ソリューションエクスプローラーが新しいファイルでツリービューを更新しないという事実を除いて、これは問題なく機能します。プロジェクトファイルをアンロードおよびリロードでき、ファイルがそこにあるので、これが機能することはわかっています。
役立つ場合は、プロジェクトにファイルを追加するために使用するコードを次に示します。2番目の関数は、ユーザーが実際に呼び出すものです。
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()
}
このコードにより、面白いダイアログがポップアップ表示されます-「プロジェクトはディスク上で変更されました-リロードしてください」-そしてうまくいけば、ユーザーがリロードすると、ファイルが正しく表示されます...しかし、それを避けて、スクリプトに必要なことを何でも起こさせます。おそらく、プロジェクトをアンロードして再ロードする方法を理解する必要がありますか?
ソリューションエクスプローラーを強制的に更新するにはどうすればよいですか?どうもありがとう!