0

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

テストアプリで使用しようとすると、次のようになります

タイプまたは名前空間名「IUser」が名前空間「Gemini.Data.Interfaces」に存在しません (アセンブリ参照がありませんか?)

コンソールアプリは次のとおりです

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 をターゲットにしていることを確認済みです。

4

2 に答える 2

0

同じ問題が一度発生しましたが、私の場合、アセンブリ名とコンソールアプリ名が同じであることがわかりました。

トラブルシューティングを行うには、まず、アセンブリ名がdllとコンソールアプリで異なることを確認することをお勧めします。

それでも解決しない場合は、別の名前空間を指定してみてください([プロジェクト]タブのデフォルトの名前空間と、既存の名前空間の名前を変更します)。

それでも解決しない場合は、最初にdllのコードをアプリにマージしてから、1つずつ移動してみてください。あなたの場合、コードベースが小さいことを願っています。

于 2012-05-17T11:47:43.417 に答える
0

最終的には古いソリューションを削除してやり直しましたが、コンソール アプリを作成したときに、ターゲット フレームワークが「.NET Framework クライアント プロファイル」であることに気付きました。

于 2012-08-24T10:07:37.003 に答える