【问题标题】:Visual Studio 2013 C++/CLI Intellisense with Reference Library带有参考库的 Visual Studio 2013 C++/CLI Intellisense
【发布时间】:2016-06-15 14:24:13
【问题描述】:

我有一个包含多个项目的解决方案。

  • Project1 是一个 C++/CLI 混合模式项目。
  • Project2 是一个支持 CUDA 的 C++/CLI 混合模式项目(CUDA 编译器用于 *.cu 和 *.cuh 文件)。

Project2 通过 Project2 的属性中的Common Properties->References 接口包含 Project1。 一切都编译得很好;但是,智能感知将 project2 的代码中对 project1 的任何引用突出显示为错误。具体来说,我收到以下类型的消息。

在我的 project2 中的 *.h 文件中

#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 项目选项中我应该知道哪些怪癖可以让智能感知感到高兴吗?


更新:我应该补充一点,有时一切正常。但是在退出 VS13 然后重新打开项目后,所有的智能感知错误都会再次出现。

【问题讨论】:

  • 没有明显的原因。间接的,IntelliSense 解析器确实需要来自已编译 Project1 程序集的元数据来完成其工作。如果该程序集还不存在,或者已经过时,那么它不可避免地会被难住。快速重新编译应该可以解决这样的问题。
  • 重新编译/重新加载任何一个项目都不能解决它。我明确指出 project2 是一个带有 CUDA 的 C++/CLI 项目。如果不包括 CUDA 编译器,我从来没有遇到过这个问题。
  • 有人编辑了我的问题并删除了 CUDA 标签,但我认为 CUDA 支持是这里的关键——过度热心的管理员。
  • 我删除了 CUDA 标签,因为从表面上看,这似乎与 CUDA 编程或 CUDA 没有任何关系。这似乎是关于智能感知和 Visual Studio 的问题(我不是一个过分热心的管理员,我是回答 CUDA 标签上大部分问题的人)。在这里帮帮我。

标签: visual-studio visual-studio-2012 cuda c++-cli intellisense


【解决方案1】:

可能是 Intellisense 数据库搞砸了。当它发生在我身上时,我采取了以下措施来纠正它:

  1. 确保您的代码处于可以编译所有内容的状态。
  2. 退出 Visual Studio
  3. 删除解决方案目录中的 .suo 和 .sdf 文件。 (删除 .suo 对于此清理过程可能不是必需的,但不会造成伤害。)
  4. 在 Visual Studio 中打开解决方案。
  5. 选择构建 --> 批量构建。
  6. 在“批量构建”窗口中,单击“全选”,然后单击“重新构建”。

【讨论】:

  • 我完全按照这些步骤操作。它不影响智能感知问题。我确保所有构建配置都能正确构建和运行。
  • 我收回了。多次重复第 2 步和第 4 步似乎有莫名其妙的帮助。看起来智能感知现在正在工作。伟大的!几个星期以来,我一直在处理所有这些毫无意义的错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 2010-11-02
  • 2020-06-30
  • 2015-03-26
  • 2016-05-07
  • 1970-01-01
相关资源
最近更新 更多