使用Visual Studio代码并使用定义的符号

Qui*_*do3 8 c# constants csproj visual-studio-code

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

我在工作中的Macbook上安装了Visual Studio Code(非Visual Studio,但是这个:https://code.visualstudio.com/).对于普通和Unity3D项目,VSCode正常工作.我在所有类上获得Intellisense,包括Unity3D特定的类,如GameObject.所以我认为我的安装和启动顺序是正确的.

我遇到的唯一问题是VSCode似乎没有识别.csproj文件中定义的常量.首先我注意到了一些Unity3D插件,但它在普通的Visual Studio项目中也是持久的.

我的示例项目是从互联网上下载的虚拟应用程序,但它完全适用于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
        }
    }
Run Code Online (Sandbox Code Playgroud)

Main中的函数调用导致编辑器上找不到异常,但它编译得很好,因为.csproj文件有这一行:

<DefineConstants>DEBUG;TRACE</DefineConstants>
Run Code Online (Sandbox Code Playgroud)

如果这是VSCode的正常行为的任何验证将非常感激.此外,如果有人知道任何解决方案,甚至是hacky,解决这个错误并强制Intellisense自动完成也会有所帮助.

我得到的错误是:

The name 'tester' does not exist in the current context [DummyConsoleApplication]
Run Code Online (Sandbox Code Playgroud)

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

Cla*_*ies 4

这是OmniSharp的一个已知限制,OmniSharp 是 Visual Studio Code所围绕的 C# 引擎。有一个关于添加支持的开放增强请求,但它与MSBuild 支持<DefineConstants>方面的一个更大问题相关。

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