未从另一个文件 C#、.Net 中检测到该指令
The directive is not detected from another file C#, .Net
我有一个配置文件,其中包含我的程序的所有配置。在那个文件中,我定义了一个指令如下:
------------ MyConfig.cs------------
#define TEST_LOCALHOST
public class MyConfig
{
....
}
现在,从另一个文件 (MyWebService.cs),我根据指令 TEST_LOCALHOST 是否定义如下定义了一个变量 MyServerName:
------------ MyWebService.cs------------
using MyData;
public class MyWebService
{
#if (TEST_LOCALHOST)
private static string MyServerName = "http://localhost:8888";
#else
private static string MyServerName = "http://MYSERVER";
#endif
}
我程序中的命名空间结构是:
| - - - 网络服务
| -------------- MyWebService.cs
|
| - - - 数据
| -------------- MyConfig.cs
然而,TEST_LOCALHOST 始终未在 MyWebService.cs 中定义。我的意思是,我的变量 MyServerName 总是指向“http://MYSERVER", but not to "http://localhost”。
我错过了什么吗?
The scope of a symbol that was created by using #define is the file in which the symbol was defined.
因此,使用 #define
指令没有好处。
而是使用在 web.config
文件中创建的 属性 并根据 属性
更改 MyServerName
的值
为了确保它无处不在,我会在项目的设置本身中定义这个预处理器开关(在 Visual Studio 中,转到项目属性页面的 "Build" 选项卡并定义"Conditional Compilation Symbols" 部分中的开关);
要么用'/define:name1[;name2]'
在命令行上定义编译器开关
我有一个配置文件,其中包含我的程序的所有配置。在那个文件中,我定义了一个指令如下:
------------ MyConfig.cs------------
#define TEST_LOCALHOST
public class MyConfig
{
....
}
现在,从另一个文件 (MyWebService.cs),我根据指令 TEST_LOCALHOST 是否定义如下定义了一个变量 MyServerName:
------------ MyWebService.cs------------
using MyData;
public class MyWebService
{
#if (TEST_LOCALHOST)
private static string MyServerName = "http://localhost:8888";
#else
private static string MyServerName = "http://MYSERVER";
#endif
}
我程序中的命名空间结构是:
| - - - 网络服务 | -------------- MyWebService.cs | | - - - 数据 | -------------- MyConfig.cs
然而,TEST_LOCALHOST 始终未在 MyWebService.cs 中定义。我的意思是,我的变量 MyServerName 总是指向“http://MYSERVER", but not to "http://localhost”。
我错过了什么吗?
The scope of a symbol that was created by using #define is the file in which the symbol was defined.
因此,使用 #define
指令没有好处。
而是使用在 web.config
文件中创建的 属性 并根据 属性
MyServerName
的值
为了确保它无处不在,我会在项目的设置本身中定义这个预处理器开关(在 Visual Studio 中,转到项目属性页面的 "Build" 选项卡并定义"Conditional Compilation Symbols" 部分中的开关); 要么用'/define:name1[;name2]'
在命令行上定义编译器开关