C# 该领域<;fieldName>;已指定,但从未使用其值

C# 该领域<;fieldName>;已指定,但从未使用其值,c#,.net,warnings,C#,.net,Warnings,我正在编写以下形式的Web Api类: public class PartController : ApiController { private ILogService _logService; private IPartSerive _partService; private const string className = "My.Long.Full.ClassPath.PartController"; ... [HttpGet] pub

我正在编写以下形式的Web Api类:

public class PartController : ApiController
{
    private ILogService _logService;
    private IPartSerive _partService;
    private const string className = "My.Long.Full.ClassPath.PartController";

    ...

    [HttpGet]
    public Part GetPart(int partId)
    {
        _logService.Log(className, DateTime.Now, etc...);
        return _partService.GetPart(partId);
    }

}
为了保持代码可读性和代码行短,我定义了一个传递给日志服务的常量字符串值

但是,我收到了编译器警告:

字段“PartController.className”已分配,但从未使用过其值

显然,我在这里使用的是这个值。奇怪的是,在我的MVC课程中,我没有看到警告

#pragma warning disable 0169, 414, 0219 // I forgot which one it is.
private const string className = "My.Long.Full.ClassPath.PartController";
#pragma warning restore 0169, 414, 0219

有人能为这种情况推荐一种最佳做法吗?或者一种抑制这些警告的方法吗?

要抑制警告,请在
className
的声明周围添加此选项。如果该警告不是正确的,则有一系列警告要禁止显示。警告编号也应位于输出窗口中警告旁边

#pragma warning disable 0169, 414, 0219 // I forgot which one it is.
private const string className = "My.Long.Full.ClassPath.PartController";
#pragma warning restore 0169, 414, 0219

我想你也可以通过将它公开来避开它,但我不确定。

有几种方法可以抑制警告

首先,正如Jimenemex所强调的,有

#pragma warning disable 0169
private const string className = "My.Long.Full.ClassPath.PartController";
#pragma warning restore 0169
还有一种方法,由于性能原因,不建议在发布代码中使用这种方法

[SuppressMessage("Microsoft.Design", "CA1039:ListsAreStrongTyped")]
您还可以创建一个cs文件来保存抑制属性,然后使用属性属性将抑制作为目标

[module: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "MyNamespace")] 

好的,找到了解决办法。出于某种原因,这是一个VisualStudio错误。可以通过重新启动Visual Studio来修复此问题。

BuildController在哪里?您发布的示例显示类名为PartController。编译器警告是指
BuildController
,而不是
PartController
-您确定您只是查找了错误的文件,并且在
BuildController
中确实没有使用它吗?(我不能用
const
复制此警告,即使它未被使用-删除
const
部分会发出警告。)抱歉,复制/pase的伪影。示例是PartController。我已经更新了代码。