Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法加载文件或程序集。。。但一开始不是吗?_C#_.net_Powershell_.net Assembly_Veeam - Fatal编程技术网

C# 无法加载文件或程序集。。。但一开始不是吗?

C# 无法加载文件或程序集。。。但一开始不是吗?,c#,.net,powershell,.net-assembly,veeam,C#,.net,Powershell,.net Assembly,Veeam,我有一个C#/.NET Windows服务,它正在存档Exchange邮箱,我最近“打包”了Veeam O365备份DLL,以便能够自动备份Exchange联机邮箱 我将向您展示一段日志,显示程序运行一段时间没有问题,然后突然出现错误: 无法加载文件或程序集'System.IO.Compression,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b77a561934e089'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 。。。在

我有一个C#/.NET Windows服务,它正在存档Exchange邮箱,我最近“打包”了Veeam O365备份DLL,以便能够自动备份Exchange联机邮箱

我将向您展示一段日志,显示程序运行一段时间没有问题,然后突然出现错误:

  • 无法加载文件或程序集'System.IO.Compression,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b77a561934e089'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。
。。。在重新启动服务之前:

(见编辑1,我的图片被覆盖)

堆栈跟踪:

System.Management.Automation.CmdletInvocationException:无法加载文件或程序集'System.IO.Compression,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089'或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。(来自HRESULT:0x8013100的异常)--->System.IO.FileLoadException:无法加载文件或程序集'System.IO.Compression,Version=4.2.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089'或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x8013100)
在Veeam.Core.FileLoggerTransport.AutoArchive()中
在Veeam.Core.FileLoggerTransport.ArchiveAndDelete()中
在Veeam.Core.FileLoggerTransport.ControlLogSize()中
在Veeam.Core.FileLoggerTransport.WriteLine(UInt32级别,字符串消息)
在Veeam.Core.LoggerTransport.LogDefault(UInt32级别,字符串消息,对象[]args)
在Veeam.PowerShell.Core.BasePSCmdlet.BeginProcessing()中
在System.Management.Automation.Cmdlet.DoBeginProcessing()中
在System.Management.Automation.CommandProcessorBase.DoBegin()中
---内部异常堆栈跟踪的结束---
位于System.Management.Automation.Runspaces.PipelineBase.Invoke(IEnumerable输入)
在System.Management.Automation.PowerShell.Worker.ConstructionPipeLineandDoWork(运行空间rs,布尔performSyncInvoke)中
在System.Management.Automation.PowerShell.Worker.CreateRunspaceIfNeedAndDoWork(运行空间rsToUse,布尔值isSync)中
位于System.Management.Automation.PowerShell.CoreInvokeHelper[TInput,TOutput](PSDataCollection`1输入,PSDataCollection`1输出,PSInvocationSettings设置)
在System.Management.Automation.PowerShell.CoreInvoke[TInput,TOutput](PSDataCollection`1输入,PSDataCollection`1输出,PSInvocationSettings设置)
在System.Management.Automation.PowerShell.Invoke(IEnumerable输入、PSInvocationSettings设置)中
在VeeamArchiverConnector.VeeamArchiverConnector.ConnectToVeeamServer(字符串服务器名,Int32端口)
在C:\Users\REMOVED\Source\Repos\ExchangeProvisioning\Deprovisioning\DeProvisioningObject.cs中的REMOVED.DeprovisionObject.DeprovisionOnline(字符串deprovisioningOu)处:第442行
在C:\Users\REMOVED\Source\Repos\ExchangeProvisioning\Deprovisioning\DeprovisionObject.cs中的REMOVED.DeprovisionObject.Start()处:第125行
该项目确实参考了System.IO.Compression,尽管:

  • Nuget软件包版本为“4.3.0”
  • 参考上的版本为“4.1.2.0”
  • 一旦构建,文件版本为“4.6.24704”
在我的.csproj文件中,我有以下内容:


..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll
真的
真的
我无法访问“Veeam.Core.*”的代码/项目,因为它们是Veeam O365备份安装程序附带的Veeam DLL

但总体而言,我不明白的是,它工作了一段时间(通常大约一到两个小时),然后错误开始,除非我重新启动服务

欢迎任何建议

谢谢


编辑1: 我在“Veeam Connector”项目中添加了更多日志和自定义异常抛出,但都是一样的:最终错误仍然是System.IO.Compression丢失,输入从未更改:


@howcheng谢谢你!这就成功了,服务运行了好几个小时,没有任何问题

因此,问题在于这种约束:


这是重定向到4.2.0.0。我想它在我唯一的.NETFramework项目上是好的,但是正如你提到的,.NETStandard System.IO.Compression强制使用版本4.1.2.0,并且在安装>时没有更新绑定,所以它现在试图找到4.2.0.0,它已经不存在了,只有4.1.2.0


将绑定更新为“newVersion=4.1.2.0”成功了

我看你的输入不好。尝试使用以前可以工作的输入运行,以确保代码仍然运行。感谢您的回复,我将尝试添加更多关于输入的日志,但请注意,在我向您展示的整个执行过程中,它们从未改变:一旦服务启动,它将以循环方式运行,始终使用相同的输入参数(veeams服务器和端口)。这是我的大问题。当错误发生时,与15分钟前工作时相比,不会调用任何不同。这不是一个解决方案,但这有助于我调试与缺少程序集和无法加载文件/程序集相关的运行时问题。这会有帮助的you@Badri谢谢,我将确保检查此链接。错误消息表明数据持续出现,并且由于输入错误而失败。我会修改您的代码,在输出文件运行时将数据发送到输出文件,以确定代码失败时正在处理哪些数据。更好的方法是添加一个异常句柄并在异常处理程序中中断,这样您就可以进行一些调试。