gpt4 book ai didi

C# 预处理器指令(#if 和#endif)不起作用。编译错误

转载 作者:行者123 更新时间:2023-11-30 20:41:33 31 4
gpt4 key购买 nike

我正在尝试调试 VS2010 4.0 框架中的现有应用程序。我收到此编译时错误:

"The name 'b_resources' does not exist in the current context" .

我看不出下面的代码有什么问题:

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Drawing;

#if TR
using b_resources = Common.Resources.TResources;
#endif

#if EN
using b_resources = Common.Resources.EnResources;
#endif

namespace Common
{
public static class BResources
{

public static string caption { get { return b_resources.ProductName; } }
public static string company_name { get { return b_resources.CompanyName; } }
}
}

TResourcesEnResources 是资源文件(.resx)

我是否遗漏了一些与 .Net 相关的引用资料?

最佳答案

最明显的问题是:您是否在当前构建中定义了TREN 编译符号?否则,#IF 语句都将为假,并且不会包含 using 语句。换句话说,如果你不定义这些符号,将编译以下代码:

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Drawing;

// Note: missing using statements

namespace Common
{
public static class BResources
{

public static string caption { get { return b_resources.ProductName; } }
public static string company_name{ get { return b_resources.CompanyName; } }
}
}

要检查或设置编译符号,请转到项目的属性。然后在 Build 选项卡上,您会看到名为 Conditional compilation symbols 的文本框。检查符号是否在那里定义。如果没有,请在此处添加其中一个。

如果您使用的是 Visual Studio,您实际上可以立即查看是否属于这种情况。如果未为当前构建定义符号,则 #IF block 中的代码将显示为灰色。如果定义了符号,它将像正常代码一样显示。

关于C# 预处理器指令(#if 和#endif)不起作用。编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32251816/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com