I have come across the most curious problem ever as .Net dev. I am compiling a library which has a newly added property *DeviceID* in the class of *UserInfo*. The library internally uses the type and it's new property just fine, but when I try and reference it from another library, the compiler kicks back a compiler error stating 

```
'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 

```

Even though my class definition looks like:

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

}

```

The offending code reads as such:

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

```

I'd like to note that all of the other members of the UserInfo class go through the compiler correctly and it is just the DeviceID, which was added today, is causing the issue. I've tried Clean All, I've tried refreshing everything from TFS, manually deleting the obj and bin directories of both projects... nothing yet has worked.

**UPDATE**: This code, which is part of the library, works correctly:

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

    ...
}

```