来自另一个DLL实现错误的控制台App接口

时间:2012-05-17 11:34:20

标签: c#-4.0 console-application

我在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。

2 个答案:

答案 0 :(得分:0)

同样的问题发生在我身上,我发现程序集名称和控制台应用程序名称在我的情况下是相同的。

要进行故障排除,我建议首先确保dll和控制台应用程序的程序集名称不同。

如果没有解决,请尝试指定不同的命名空间(项目选项卡中的默认命名空间,并重命名现有的命名空间)。

如果还没解决,请先尝试将dll代码合并到app中,然后逐个移动。我希望代码库在您的情况下很小。

答案 1 :(得分:0)

我最终刚刚删除旧的解决方案并重新启动,但我注意到的一件事是,当我创建一个控制台应用程序时,Target Framework是“.NET Framework Client Profile”