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

Using Visual Studio Code and using defined symbols

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

我在我工作的 Macbook 上安装了 Visual Studio 代码(不是 Visual Studio,而是这个:https://code.visualstudio.com/)。 VSCode 在其他方面与普通项目和 Unity3D 项目工作得很好。我在所有 类 上都获得了 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
        }
    }

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

<DefineConstants>DEBUG;TRACE</DefineConstants>

如能验证这是否是 VSCode 的正常行为,我们将不胜感激。此外,如果有人知道任何解决方案,即使是 hacky 的解决方案,也可以解决这个错误并强制 Intellisense 自动完成。

我得到的错误是:

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

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

它应该有效...

作为完整性检查,您是否:

  • "Sync MonoDevelop Project"最近?
  • 确保 Visual Studio 代码选择了 -csharp 解决方案 (.sln)? (点击状态栏火焰即可更改)

这是 OmniSharp, the C# engine that Visual Studio Code is built around. There is an open enhancement request for adding <DefineConstants> support, but it is tied to a larger issue with regards to MSBuild Support 的已知限制。

目前,Visual Studio 代码不支持此配置。您可以尝试通过 launch.json 来定义您的常量,但最多支持很少。