我遇到过.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; }
}
...
}
答案 0 :(得分:6)
所以我的冰雹玛丽传递是删除项目参考,然后再添加它。然后编译。不知道为什么这样有效,但我想在这里发布给其他可能遇到同样问题的人。
答案 1 :(得分:1)
其他库是使用项目引用还是二进制引用?如果它是二进制引用,你确定它使用最新版本吗?
答案 2 :(得分:1)
检查生成错误的项目的参考路径;确保你要么引用库项目(如果它是你的解决方案的一部分),要么引用库的最新版本(如果它不是。)
答案 3 :(得分:1)
我之前遇到过这种情况。这对我有用:
这两个代码示例是否在单独的项目中?如果是这样,我会说尝试重建第一个项目(包含UserInfo类),然后取出未通过编译的行并尝试重建第二个项目。然后重建所有。然后重新添加违规行并进行全部重建。
可能不适合你,但值得一试。我知道这种情况令人沮丧。
答案 4 :(得分:0)
对我来说 - 尝试重新创建显示问题的行。写下对象句点(。)的名称,然后等待VS显示可用的properi列表
答案 5 :(得分:0)
我遇到了一个非常类似的问题。
在我的情况下,我有一段代码,我只需要每年运行几次。当我尝试使用它时,访问会员时出错。自从我上次使用代码以来,没有什么应该改变。 Intellisense在使用'。'时检测到该成员。在Visual Studio中。我重新启动Visual Studio和计算机,但问题仍然存在
最后为了解决我的问题,我创建了一个新文件,将代码从原始文件复制到新文件,就是这样。没有代码修改。我使用了Ctrl-C,Ctrl-V,因此手动触摸无法修正内容。这不是第一次复制和粘贴修复了一个错误,因此值得将这个想法保留在工具箱中。
有时一个神秘的问题需要一个同样神秘的解决方案。
答案 6 :(得分:0)
就我而言,Web应用程序的项目属性存在问题。为了解决这个问题,我做了以下几点:
以前,我的输出路径是bin \ Debug或bin \ Release,具体取决于我正在查看的配置。我不知道为什么这会使我的标记页面能够在我的代码隐藏中看到方法,但确实如此。一旦我改变了这个,错误就消失了。
这是VS2012 w / update 2。
答案 7 :(得分:0)
我的解决方案:我创建了另一个名称方法,设置属性。我的问题出在VS2015 + Silverlight 5
上