我怎样才能重新加载一个Visual Studio项目通一的NuGet PowerShell脚本(Ho

2019-09-22 04:39发布

在解决方案资源管理“DependentUpon”工程项目的其他项目(例如,web.config中/ web.Debug.config)的儿童通常被禁用。 我的问题是,当项目通过的NuGet / PowerShell中的包动态添加安装,解决方案资源管理器不会重新加载项目,因此项目不显示的依赖。 手动关闭并重新打开解决方案或卸载/重新加载项目解决问题。 我想项目刷新自动为install.ps1 PowerShell脚本的一部分,但我这样做的时候,我得到“项目未加载”错误和的NuGet回滚安装。 我想这是因为我知道如何得到刷新上下文菜单中的唯一方法是先卸载项目。

我正在寻找的是被这个调用后面调用的对象。 我想,如果我能直接执行,我就不用先卸载该项目。

$dte.ExecuteCommand("Project.ReloadProject")

这里是完整的代码卸载/重装Solution Explorer中的项目

# 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")

Answer 1:

我已经得到了解决此问题的“接触”的项目文件,并因此触发的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


Answer 2:

这里回答类似的问题: 有没有在VS 2010中的设置,将允许它到一个项目文件更改后恢复打开的文件? 然而,这并不表明重装无需先调用卸载被调用,它不直接调用W / O会通dte.executecommand提供了一种机制。



文章来源: How can I reload a visual studio project thru a nuget powershell script