C# 避免对未定义的#if代码进行统一错误检查

C# 避免对未定义的#if代码进行统一错误检查,c#,unity3d,C#,Unity3d,我正在从事一个Unity(v2019.1.11)项目,其中我有一个类的案例,该类是通过另一个项目的git子模块包含的,该项目存在名称空间(CustomNameSpace): #if标志 使用自定义名称空间; 公开课Foo { } #恩迪夫 在我手头的项目中,CustomNameSpace不存在。因此,我认为除非我在Unity的播放器设置中定义标志,否则包含此代码的文件将被视为空文件。但是,即使未定义标志,Unity也会为缺少的命名空间抛出一个错误 我想知道如何正确地避免Unity编译甚至检查代

我正在从事一个Unity(v2019.1.11)项目,其中我有一个类的案例,该类是通过另一个项目的
git子模块
包含的,该项目存在名称空间(
CustomNameSpace
):

#if标志
使用自定义名称空间;
公开课Foo
{
}
#恩迪夫
在我手头的项目中,
CustomNameSpace
不存在。因此,我认为除非我在Unity的播放器设置中定义
标志
,否则包含此代码的文件将被视为空文件。但是,即使未定义
标志
,Unity也会为缺少的命名空间抛出一个错误

我想知道如何正确地避免Unity编译甚至检查代码文件

编辑:
我已经检查过:
-Unity player设置中未定义
标志
-
标志
未在解决方案中的任何代码文件中定义

-
标志
未在
Assets\csc.rsp
中定义,如前所述

此标志是在项目中的某个地方定义的,在脚本或unity的项目设置中

您需要找到定义它的位置并删除定义,这样unity就不会编译其中的代码

1) 它可以在unity项目设置窗口中定义,要找到它:Edit=>project settings=>Player选项卡,然后找到文本输入字段——在这里的绿色框中,您可能会找到正在定义的标志符号,将其删除


2) 或者可以在代码中的某个地方定义,以找到它:我假设您使用visual studio作为IDE,按CTRL+SHIFT+F并在整个解决方案中搜索这一行代码
#define FLAG
这一行定义了您的标志,并使unity识别标志当前为真,从而编译其中的代码,这是您要删除的行。

这是正确的。那面旗帜正在某处升起,但那会在哪里呢?至少这肯定不是我设定的。我不知道有什么地方可以把它和播放器的设置分开。你知道一个吗?我认为可能有一个统一机制,它可以检查任何代码文件而不考虑
#如果
sNo,那么就没有这样的机制<代码>标志正在某处设置。也许你可以在整个项目中搜索“FLAG”?它可能与其他东西冲突。尝试使用更“名称空间”的替代方法,如
#if ZACH_FLAG
两个建议均被否定不从内部搜索VS.它不会搜索.csproj或.sln文件。使用非IDE的内容进行搜索,并包含所有内容。旗帜正在某处升起。这是无可争议的。如果找不到,请展开搜索。@BenjaminZach还会在任何DLL中搜索,这些DLL来自您试图向unity隐藏的同一源代码。