在解决方案资源管理器中,“DependentUpon”项目项通常作为其他项目的子项(例如 web.config / web.Debug.config)被禁用。
我遇到的问题是,当在包安装时通过 nuget/powershell 动态添加项目时,解决方案资源管理器不会重新加载项目,因此项目不会显示为依赖项。手动关闭并重新打开解决方案或卸载/重新加载项目可以解决该问题。
我想将项目重新加载作为 install.ps1 powershell 脚本的一部分进行自动化,但当我这样做时,我会收到“项目已卸载”错误,并且 nuget 会回滚安装。我认为这是因为我知道如何获取“重新加载”上下文菜单的唯一方法是首先卸载项目。
我正在寻找在此调用后面调用的对象。我想如果我可以直接执行,我就不必先卸载项目了。
$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")
我通过“触摸”项目文件并因此触发 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)