2013-02-21 64 views
2

打開解決方案時,我正在移植一個VS2010擴展VS2012 OnAfterOpenProject調用fAdded == 1,我已經看到了IVsSolutionEvents.OnAfterOpenProject(IVsHierarchy pHierarchy, int fAdded)回調調用fAdded == 1當我裝我的解決方案。我相信這一定是由於VS2012中的項目異步加載。 VS2010不會發生這種情況。在VS2012

我的問題是如何知道在OnAfterOpenProject它是從異步項目加載過程中調用?

回答

0

(雖然遲到了)從MSDN IVsSolutionEvents.OnAfterOpenProject參考here這種行爲似乎是正確的和DOC解釋說,(到現在爲止,至少):

fAdded

類型:System.Int32

[IN] true如果項目在解決方案打開後添加到解決方案中。 false如果項目在解決方案打開時添加到解決方案中。

從你的報告,似乎(解決方案仍然加載)映射到,所以我想真正將映射到。這是定義在某種程度上是一致的:

public const int S_FALSE = 1; 
public const int S_OK = 0; 

最後,在OnAfterOpenProject實現,你可以基於fAdded輸入的值過濾呼叫:如果與調用,這意味着該解決方案仍然是(異步)加載,否則意味着新項目已添加到(已加載)解決方案中。