Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting CS1061 error on compile even though the property exists

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

    ...
}
like image 275
thaBadDawg Avatar asked May 18 '11 20:05

thaBadDawg


2 Answers

So my hail mary pass was to remove the project reference and then add it again. Then it compiled. Have no clue why that worked, but figured I'd post it here for other who might run into the same problem.

like image 175
thaBadDawg Avatar answered Nov 14 '22 22:11

thaBadDawg


Is the other library using a project reference or a binary reference? If its a binary reference, are you sure its using the latest build?

like image 45
Ritch Melton Avatar answered Nov 14 '22 21:11

Ritch Melton