【问题标题】:Getting CS1061 error on compile even though the property exists即使属性存在,编译时也会出现 CS1061 错误
【发布时间】:2011-05-18 20:59:52
【问题描述】:

作为 .Net 开发人员,我遇到了最奇怪的问题。我正在编译一个库,该库在 UserInfo 类中具有新添加的属性 DeviceID。该库在内部使用该类型并且它是新属性就好了,但是当我尝试从另一个库中引用它时,编译器会返回一个编译器错误声明

'library.UserInfo' does not contain a definition for 'DeviceID' and no extension 
method 'DeviceID' accepting a first argument of type 'library.UserInfo' could 
be found 

即使我的类定义看起来像:

public class UserInfo
{
    public static UserInfo Current
    {
        get
        {
            if (UserInfoPrincipal.Current != null)
            {
                return UserInfoPrincipal.Current.UserData;
            }
            else
            {
                return null;
            }
        }
    }

    public string UserID { get; set; }
    public string DeviceID { get; set; }
    public string MikeLiUserID { get; set; }
    public string TransactionServer { get; set; }
    public string ApplicationKey { get; set; }
    public string IpAddress { get; set; }

}

违规代码如下:

    internal LogDetail BuildLogDetail(LogType entryType, string message)
    {
        return new LogDetail
        {
            ActingUserID = UserInfo.Current.UserID,
            ActingDeviceID = UserInfo.Current.DeviceID,
            ApplicationKey = UserInfo.Current.ApplicationKey,
            IpAddress = UserInfo.Current.IpAddress,
            EntryType = entryType,
            OwnerID = UserInfo.Current.UserID,
            LogData = message
        };
    }

我想指出,UserInfo 类的所有其他成员都正确地通过了编译器,只是今天添加的 DeviceID 导致了问题。我尝试过 Clean All,我尝试过从 TFS 刷新所有内容,手动删除两个项目的 obj 和 bin 目录……还没有任何效果。

更新:此代码是库的一部分,可以正常工作:

public class UserInfoPrincipal : IPrincipal
{
    public static UserInfoPrincipal Current
    {
        get
        {
            if (Thread.CurrentPrincipal is UserInfoPrincipal)
                return (UserInfoPrincipal)Thread.CurrentPrincipal;
            else
                return null;
        }
    }

    ...

    internal UserInfo UserData
    {
        get { return _userInfo; }
    }

    public string DeviceID
    {
        get { return _userInfo.DeviceID; }
    }

    ...
}

【问题讨论】:

  • 我发现 Visual Studio 有时需要重启……你试过了吗?
  • 竟然连电脑都重启了
  • @thaBadDawg - 重新启动整个计算机?伙计,这意味着它是一个严重的问题! :) 既然您提到了 TFS - 是否有另一台开发机器可以从中获取源代码并尝试在那里构建它?或者甚至在您的机器上设置另一个工作区?
  • 这个问题最初出现在另一个开发者的机器上,让他检查了有问题的代码并试图在我的机器上处理它。两台机器有同样的问题意味着我很可能忽略了一些非常简单的东西,我什至不想看它。
  • @Jim - 更好的方法是观察 msbuild diag 输出并查看它解析了哪个引用。

标签: c# .net compiler-errors


【解决方案1】:

所以我的万岁通是删除项目引用,然后再次添加它。然后它编译。不知道为什么会这样,但我想我会把它贴在这里给其他可能遇到同样问题的人。

【讨论】:

  • 您在使用 VCS 吗?您能否在此处添加 .csproj 文件的差异作为答案的一部分?
  • 奇怪的是,对于项目文件,唯一的区别是包含 ProjectReferences 的顺序。这个库项目以前包含在顶部,现在位于底部。项目的相同 Guid、相同的名称和文件系统位置......编译器是否有可能在某个地方有这个项目的缓存版本?
  • 我不知道。 inproc 编译器的工作方式与普通编译器不同,有时它/VS 可以保留一些东西(例如 ItemGroup 标记引用的已删除文件)。 耸耸肩
  • 大多数。令人困惑。问题。永远。
  • 我向同事描述了这个问题,说“这违背了我对编程的了解。”
【解决方案2】:

其他库是使用项目引用还是二进制引用?如果它是二进制引用,您确定它使用的是最新版本吗?

【讨论】:

  • 我将它用作项目参考,我已经清理了几次编译输出,认为这可能是问题所在。
【解决方案3】:

检查产生错误的项目的参考路径;确保您引用的是库项目(如果它是您的解决方案的一部分)或库的最新版本(如果不是)。

【讨论】:

    【解决方案4】:

    我之前遇到过一些类似的情况。这对我有用:

    这两个代码示例是否位于不同的项目中?如果是这样,我会说尝试重建第一个项目(包含 UserInfo 类),然后取出编译失败的行并尝试重建第二个项目。然后全部重建。然后重新添加有问题的行并全部重建。

    可能不适合你,但值得一试。我知道这种情况令人沮丧。

    【讨论】:

    • 说情况令人沮丧是轻描淡写的。我准备把我的电脑扔出窗外。
    【解决方案5】:

    对我来说——尝试重新创建显示问题的行。写下对象句号(.)的名称,然后等待 VS 显示可用属性列表

    【讨论】:

      【解决方案6】:

      我遇到了一个非常相似的问题。

      就我而言,我有一段代码每年只需要运行几次。当我尝试使用它时,访问成员时出错。自从我上次使用该代码以来,应该没有任何改变。 Intellisense 在使用“。”时检测到该成员。在 Visual Studio 中。我重新启动了 Visual Studio 和计算机,但问题仍然存在。

      最后为了解决我的问题,我创建了一个新文件,将代码从原始文件复制到新文件中,就是这样。没有代码修改。我使用了 Ctrl-C、Ctrl-V,因此内容没有通过手动触摸进行更正。这不是复制和粘贴第一次修复错误,因此值得将这个想法保留在工具箱中。

      有时,一个神秘的问题需要一个同样神秘的解决方案。

      【讨论】:

        【解决方案7】:

        就我而言,这是 Web 应用程序的项目属性的问题。为了解决这个问题,我做了以下事情:

        1. 右键单击项目 > 单击属性。
        2. 在构建选项卡上,将所有配置的输出路径值更改为:bin\

        以前,我的输出路径是 bin\Debug 或 bin\Release,具体取决于我查看的配置。我不知道为什么这会破坏我的标记页面在我的代码隐藏中查看方法的能力,但确实如此。一旦我改变了这个,错误就消失了。

        这是在带有更新 2 的 VS2012 中。

        【讨论】:

          【解决方案8】:

          我的解决方案:我是创建另一个名称方法来设置属性。我的问题是在 VS2015 + Silverlight 5

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-02
            • 2012-02-04
            • 1970-01-01
            相关资源
            最近更新 更多