2016-03-02 91 views
0

我有一個包含多個項目的解決方案。Visual Studio 2013 C++/CLI智能感知與參考庫

  • Project1是C++/CLI混合模式項目。
  • Project2是一個支持CUDA的C++/CLI混合模式項目(CUDA編譯器用於* .cu和* .cuh文件)。

Project2通過Project2屬性中的Common Properties->References接口包含Project1。 一切都很好編譯;但是,intellisense將project2的代碼中的任何引用強調爲project1作爲錯誤。具體來說,我得到以下類型的消息。

在我的* .h文件中的項目2

#pragma once 
namespace Project2 
{ 
    class TypeInProject2 
    { 
     property Project1::TypeInProject1^ obj 
     { 
      Project1::TypeInProject1^ get(); 
      void set(Project1::TypeInProject1^ value); 
     }; 
     //"Project1" is underlined in red 
     //IntelliSense: name followed by '::' must be a class or namespace 
    }; 
} 

我可以智能感知幸福的通過將包括在PROJECT1頭,但是這會導致所有的PROJECT1的類的重新定義,並提出了編譯錯誤。

在C++/CLI項目選項中,我應該瞭解一些使IntelliSense感到滿意的怪癖嗎?


更新:我應該補充說,有時一切工作正常。但是在退出VS13並重新開始項目之後,所有智能感知錯誤再次出現。

+0

沒有明顯的原因。間接的,IntelliSense解析器確實需要編譯後的Project1程序集中的元數據才能完成其工作。如果該集會尚不存在,或者已經過時,那麼它不可避免地會陷入困境。快速重新編譯應該解決這個問題。 –

+0

重新編譯/重新加載任一項目都不能解決它。我明確指出project2是一個CUDA的C++/CLI項目。沒有包含CUDA編譯器,我從來沒有遇到過這個問題。 –

+0

有人編輯我的問題並刪除了CUDA標記,但我認爲CUDA支持是這裏的關鍵 - 過度管理。 –

回答

3

可能是Intellisense數據庫被搞砸了。以下是我在發生這種情況時所做的改正:

  1. 請確保您的代碼處於一切都將編譯的狀態。
  2. 退出Visual Studio
  3. 刪除解決方案目錄中的.suo和.sdf文件。 (刪除.suo可能對此清理過程不是必需的,但它不會造成傷害。)
  4. 在Visual Studio中打開解決方案。
  5. 選擇Build - > Batch Build。
  6. 在批生成窗口中,單擊「全選」,然後單擊「重建」。
+0

我完全按照這些步驟。它不影響智能感知問題。我確保所有構建配置都可以正確構建和運行。 –

+0

我收回它。重複第2步和第4步似乎有莫名其妙的幫助。它看起來像intellisense正在工作。大!我幾周來一直在處理所有這些毫無意義的錯誤。 –