使用 Visual Studio Code 和使用定义的符号

Posted

技术标签:

【中文标题】使用 Visual Studio Code 和使用定义的符号【英文标题】:Using Visual Studio Code and using defined symbols 【发布时间】:2015-07-29 15:08:24 【问题描述】:

编辑:我已经编辑了整个问题,因为这不仅适用于 Unity3D,而且适用于所有 .sln 项目。

我在工作的 Macbook 上安装了 Visual Studio Code(不是 Visual Studio,而是这个:https://code.visualstudio.com/)。否则,VSCode 在普通和 Unity3D 项目中工作得很好。我在所有类上都获得了 Intellisense,包括 Unity3D 特定的类,比如 GameObject。所以我认为我的安装和启动顺序是正确的。

我唯一的问题是 VSCode 似乎无法识别 .csproj 文件中定义的常量。首先,我在一些 Unity3D 插件中注意到了这一点,但它在普通的 Visual Studio 项目中也存在。

我的示例项目是一个从 Internet 下载的虚拟应用程序,但它完全可以在 MonoDevelop 上运行。这是我的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DummyConsoleApplication
    
    class Program
        
            static void Main(string[] args)
            
                tester();
            

            #if DEBUG
            static void tester()

            
            #endif
        
    

Main 中的函数调用导致编辑器出现未找到的异常,但它编译正常,因为 .csproj 文件有这一行:

<DefineConstants>DEBUG;TRACE</DefineConstants>

如果这是否是 VSCode 的正常行为,我们将不胜感激。此外,如果有人知道任何解决方案,甚至是骇人听闻的解决方案,以克服这个错误并强制 Intellisense 自动完成也会有所帮助。

我得到的错误是:

The name 'tester' does not exist in the current context [DummyConsoleApplication]

我的硬件是装有 Yosemite 的 Macbook,我的编译器是 dnx-mono.1.0.0-beta4。

【问题讨论】:

可能与行尾有关吗?在 Unity 中使用 Visual Studio 代码时必须转换行尾。是的,MonoDevelop 是一场噩梦。 嗯,这是我还没有做的事情。你能给我指出一个正确的方向吗? 我想我已经转换了行尾。我使用了一个名为 LineBreak 的实用程序来执行此操作。没有修复错误。如果你使用的是 VSCode,你能检查一下你的环境中的行为吗? 这些链接充分说明了 Visual Studio 而不是 VSCode,因此它们对我的情况没有帮助。是的,MonoDevelop 注意到行尾发生了变化。我用 LineBreak 工具尝试了 mac、win 和 unix 结局,但没有任何帮助。 【参考方案1】:

这是 OmniSharp 的一个已知限制,Visual Studio Code 是 built around 的 C# 引擎。有一个 open enhancement request 用于添加 &lt;DefineConstants&gt; 支持,但它与 MSBuild Support 相关的更大问题。

目前,这不是 Visual Studio Code 下支持的配置。您可以尝试通过 launch.json 来定义您的常量,但支持最多的是最少的。

【讨论】:

谢谢。很高兴知道它不在我的环境中。你能给我更多关于在 lauch.json 中定义它们的信息吗?如果我让 VSCode 在“#if UNITY_android”-tags 中调用方法时不出错,我会很高兴。【参考方案2】:

它应该可以工作...

作为一个健全的检查,你有没有:

最近“同步 MonoDevelop 项目”? 确保 Visual Studio Code 选择了 -csharp 解决方案 (.sln)? (点击状态栏中的火焰进行更改)

【讨论】:

是的。我进行了同步,打开了包含 .sln 文件的项目文件夹,并从底部的火焰中选择了项目。 Intellisense 工作得很好而且很花哨。你的 VSCode 能识别 Unity 定义的那些标签吗?

以上是关于使用 Visual Studio Code 和使用定义的符号的主要内容,如果未能解决你的问题,请参考以下文章

visual studio code 怎么用

如何使用 Visual Studio Code 创建和链接另一个网页?

使用 Visual Studio Code 调试和运行 Angular 2 Typescript?

Visual Studio Code 缩放设置

visual studio code怎么变成中文

使用Visual Studio Code开发和调试Java Burp扩展