2012-09-06 51 views
1

在解決方案資源管理器中,「DependentUpon」項目通常作爲其他項的子項(例如web.config/web.Debug.config)禁用。 我遇到的問題是,在安裝包時通過nuget/powershell動態添加項目時,解決方案資源管理器不會重新加載項目,因此項目不會顯示爲依賴項。手動關閉並重新打開解決方案或卸載/重新加載項目可解決問題。 我想將Project Reload自動化爲install.ps1 powershell腳本的一部分,但是當我這樣做時,我得到'Project Unloaded'錯誤,並且nuget回滾安裝。我認爲這是因爲我知道如何獲得Reload上下文菜單的唯一方法是首先卸載項目。如何通過nuget powershell腳本重新加載Visual Studio項目

我正在尋找在此調用後面被調用的對象。我想如果我可以直接執行,我不必首先卸載該項目。

$dte.ExecuteCommand("Project.ReloadProject") 

這裏是完整的代碼卸載/在解決方案重新加載項目資源管理器

# Reload a project thru dte/SolutionExplorer Window 
# using Unload and Reload Context Menus. 

$project = Get-Project 
$shortpath = $dte.Solution.Properties.Item("Name").Value + "\" + $project.Name 

#following GUID = Constants.vsWindowKindSolutionExplorer 
#magic 1 = vsUISelectionType.vsUISelectionTypeSelect 
$dte.Windows.Item("{3AE79031-E1BC-11D0-8F78-00A0C9110057}").Activate() 
$dte.ActiveWindow.Object.GetItem($shortpath).Select(1) 
$dte.ExecuteCommand("Project.UnloadProject") 
$dte.ExecuteCommand("Project.ReloadProject") 
+0

您是否曾經找到更好的解決方案?我遇到了同樣的問題,即在nuget安裝或更新後項目文件的更改沒有觸發項目重新加載,而我只需要開發人員重新加載自己!我很驚訝這不是由VS自動處理,尤其是nuget包通過VS項目對象更新項目。 – Phil

+0

在這裏,我在8分鐘後張貼我的最終解決方案(facepalm!)我只是'接觸'該項目文件重新加載項目與Install.ps1中的以下內容: $(get-item $ project.FullName ).lastwritetime = get-date – Phil

+0

Phil,自從我發佈這個問題後,我還沒有看過,但如果您有解決方案,請發表評論和答案。 –

回答

3

我已經通過'觸摸'項目文件來解決此問題,因此觸發Visual Studio以提示用戶在包管理器關閉後重新加載修改的項目。因此,我的Install.ps1文件如下所示:

param($installPath, $toolsPath, $package, $project) 

# if there isn't a project file, there is nothing to do 
if (!$project) { return } 

# Do some stuff here 

$project.Save() 

# Touch the file to force a project reload 
$(get-item $project.FullName).lastwritetime=get-date 
相關問題