[英]System.IO.FileNotFoundException: Could not load file or assembly
[英]Could not load file or assembly System.IO.FileNotFoundException
我正在開發的應用程序是一個簡單的遠程聊天應用程序。
當我嘗試運行我的應用程序時,我遇到此異常。 當談到加載文件或程序集時,我真的不明白。
“ System.Reflection.TargetInvocationException:調用的目標引發了異常。---> System.IO.FileNotFoundException:無法加載文件或程序集'Client,Version = 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);
}
}
}
我假設處理程序是在您的Client程序集中創建的? 訂閱Greetings.Sender事件時,對該處理程序的引用將傳遞到您的服務器程序集。 作為服務器端反序列化的一部分,它必須解析處理程序類型。 由於它位於客戶端程序集中,因此服務器程序集必須可以訪問它。
將所有程序集構建到一個共享的調試或發布文件夾中,然后重試。
使用Microsoft sysinternals進程監視器,配置該工具以監視應用程序的所有文件訪問操作,然后您可以查看您的進程嘗試訪問的程序集。
使用Microsoft sysinternals進程監視器的想法對我來說非常理想。 我能夠看到它正在尋找錯誤文件夾中的依賴項之一。
如果遇到Could not load file or assembly
使用程序集綁定日志查看器 (在名為fuslogvw.exe
磁盤上,以及.NET SDK中的availbale)在GAC或您的應用程序文件夾中准確找出您的進程實際上正在探查什么。
典型的登錄條目將保存類似於以下內容的信息:
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文檔進行探測 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.