我在DLL中有一个接口,并且正在用于测试的控制台应用程序中实现它
我的界面如下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Gemini.Data.Interfaces
{
public interface IUser
{
IEnumerable<IUserDetails> UserProfiles { get; set; }
string AdUserName { get; set; }
}
public interface IUserDetails
{
int UserId { get; set; }
string DisplayUserName { get; set; }
string OfficeCode { get; set; }
string UserEmail { get; set; }
string AdLogin { get; set; }
bool? LastActiveUser { get; set; }
Gemini.Data.App_Consts.Access_Rights UserAccess { get; set; }
bool IsPM { get; set; }
bool IsSPM { get; set; }
bool IsVdbUser { get; set; }
DateTime? LastModified { get; set; }
DateTime? LastLoginUse { get; set; }
int? LastModifiedBy { get; set; }
}
}
当我尝试在测试应用程序中使用它时,我得到以下
名称空间'Gemini.Data.Interfaces'中不存在类型或命名空间名称'IUser'(您是否缺少程序集引用?)
控制台应用程序如下
using System;
using System.Collections.Generic;
using Gemini.Data.Interfaces;
namespace ConsoleApplication2
{
public class User : Gemini.Data.Interfaces.IUser
{
private IEnumerable<IUserDetails> _UserProfiles = null;
#region IUser Members
public IEnumerable<IUserDetails> UserProfiles
{
get { return _UserProfiles; }
set { _UserProfiles = value; }
}
public string AdUserName { get; set; }
#endregion
}
class Program
{
static void Main(string[] args)
{
User u = new User();
Gemini.Data.Main.UserDetails ud = new Gemini.Data.Main.UserDetails(u, "Qpirate");
}
}
}
Visual Studio似乎引用了接口,我可以在类上调用Go To Definition。
任何人都知道我可以尝试的其他事情吗?
我已经检查过控制台应用程序的目标是与DLL相同的.NET Framework。
答案 0 :(得分:0)
同样的问题发生在我身上,我发现程序集名称和控制台应用程序名称在我的情况下是相同的。
要进行故障排除,我建议首先确保dll和控制台应用程序的程序集名称不同。
如果没有解决,请尝试指定不同的命名空间(项目选项卡中的默认命名空间,并重命名现有的命名空间)。
如果还没解决,请先尝试将dll代码合并到app中,然后逐个移动。我希望代码库在您的情况下很小。
答案 1 :(得分:0)
我最终刚刚删除旧的解决方案并重新启动,但我注意到的一件事是,当我创建一个控制台应用程序时,Target Framework是“.NET Framework Client Profile”