在VS2012中打开Solution后,使用fAded == 1调用OpenProject

时间:2013-02-21 21:08:58

标签: visual-studio-2012 visual-studio-extensions

我目前正在将VS2010扩展移植到VS2012,我看到当我加载解决方案时,IVsSolutionEvents.OnAfterOpenProject(IVsHierarchy pHierarchy, int fAdded)回调是用fAdded == 1调用的。我相信这必须归功于VS2012中项目的异步加载。 VS2010不会发生这种情况。

我的问题是,如何在OnAfterOpenProject中知道它是从异步项目加载过程调用的?

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

(虽然参加派对很晚)从MSDN IVsSolutionEvents.OnAfterOpenProject引用here开始,行为似乎是正确的,并且文档解释了(至少现在,至少):

  

fAdded

     

输入:System.Int32

     

[in] true 如果在解决方案打开后将项目添加到解决方案中。如果在打开解决方案时将项目添加到解决方案中,则 false

从您的报告中,似乎 false (解决方案仍在加载)映射到 1 ,因此我猜 true 将映射到<强> 0 即可。这在某种程度上与VSConstants

中的定义一致
public const int S_FALSE = 1;
public const int S_OK = 0;

最后,在您的OnAfterOpenProject实施中,您可以根据fAdded输入的值过滤调用:如果使用 1 调用,则表示解决方案仍然是(异步)加载,否则意味着新项目已添加到(已加载)解决方案中。