即使属性存在,在编译时也会出现CS1061错误

tha*_*awg 4 .net c# compiler-errors

我曾遇到过.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 
Run Code Online (Sandbox Code Playgroud)

即使我的类定义如下:

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; }

}
Run Code Online (Sandbox Code Playgroud)

违规代码如下:

    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
        };
    }
Run Code Online (Sandbox Code Playgroud)

我想要注意的是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; }
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

tha*_*awg 6

所以我的冰雹玛丽传递是删除项目参考,然后再次添加.然后编译.不知道为什么会有效,但我想在这里发布它可能会遇到同样问题的其他人.