1

私が開発しているアプリケーションは、単純なリモート チャット アプリケーションです。

アプリケーションを実行しようとすると、この例外が発生します。ファイルまたはアセンブリのロードについて話しているとき、私は本当に理解していません。

「System.Reflection.TargetInvocationException: 呼び出しのターゲットによって例外がスローされました。 ---> System.IO.FileNotFoundException: ファイルまたはアセンブリを読み込めませんでした 'クライアント、バージョン = 1.0.0.0」

try
{
   gt = (Greeting)Activator.GetObject(typeof(Greeting), "tcp://Localhost:7189/Greeting");
   handler = new MessageHandler(OnReceive);
   gt.Sender += handler;
}
catch(Exception ex)
{
   textBox2.Text = ex.ToString();
}

この例外は、この行でスローされます

gt.Sender += handler;

以下は私のグリーティングクラスです。

[Serializable]
public delegate void MessageHandler(string mymsg);
public class Greeting:MarshalByRefObject
{
    public event MessageHandler Sender;

    public override object InitializeLifetimeService()
    {
        return null;
    }

    public Greeting()
    {
    }

    public void postGreeting(string msg)
    {
        if (Sender != null)
        {
            Sender(msg);
        }
    }
}
4

4 に答える 4

1

クライアント アセンブリ内でハンドラーが作成されていると思いますか? Greetings.Sender イベントをサブスクライブすると、ハンドラーへの参照がサーバー アセンブリに渡されます。サーバー側での逆シリアル化の一部として、ハンドラー タイプを解決する必要があります。これはクライアント アセンブリ内にあるため、サーバー アセンブリからアクセスできる必要があります。

すべてのアセンブリを 1 つの共有デバッグ フォルダーまたはリリース フォルダーにビルドして、もう一度やり直してください。

于 2013-04-03T11:55:52.887 に答える
0

Assembly Binding Log ViewerCould not load file or assembly (.NET SDK から呼び出されて利用可能なディスク上) を使用して、GAC またはアプリケーション フォルダーでプロセスが実際にプローブしているものを正確に確認したことがある場合。fuslogvw.exe

典型的なログエントリは、次のような情報を保持します:

LOG: Processing DEVPATH.
LOG: DEVPATH is not set. Falling through to regular bind.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Post-policy reference: graphicfailtest.resources, Version=0.0.0.0, Culture=en-US, PublicKeyToken=null
LOG: Attempting download of new URL file:///C:/Program Files/Microsoft.NET/FrameworkSDK/Samples/Tutorials/resourcesandlocalization/graphic/cs/en-US/graphicfailtest.resources.DLL.

次に、正しいバージョンであるかどうかを含め、期待する場所からアセンブリが読み込まれることを確認できます。

msdnドキュメントから調べます。

于 2013-08-18T11:51:30.570 に答える