无法加载文件或程序集“ quickfix_net.dll”或其依赖项之一

时间:2019-05-08 01:26:57

标签: c# .net visual-studio dll quickfix

(让我首先道歉,并说我已经对这个问题进行了深入研究,并且我知道对此有很多讨论,我相信到目前为止,即使没有运气,我也尝试了大多数(如果不是全部的话)建议-非常感谢您的帮助)我将尝试对此进行总结,但是我了解到,您可能需要填写一些更多详细信息。请对我耐心。

我使用VS2017创建了两个C#程序。两者都在我的开发环境(Win 10)中运行,但是只有第一个在我的生产环境(Windows Server 2012 R2)中运行。第二个错误显示在标题中。它们都是使用FIX协议的交易程序,它们基本上使用链接FIX库(包括quickfix_net.dll)的相同代码库。

我尝试使用依赖项跟踪程序,但有错误,但是在运行中的程序与未运行的程序之间它们是相同的。

我使用了fuslogvw,但显然表明所涉及的dll已成功加载。

两个程序(工作的和不工作的)的csproj都显示了提取dll的相同相对路径,并且在两棵树中的相同位置。

我看到的唯一可疑的事情是,较早创建的第一个程序显示了“混合平台”的目标体系结构,但是当创建使用“任何CPU”的第二个程序时,此选项不可用。 (我尝试同时使用x86和“ Any CPU”作为失败的服务器,但是没有运气。

几天后,我基本上得到了想法。如果有人有想法,请告诉我什么代码/日志文件/配置或您想看到的任何内容。预先感谢您的任何帮助。...谢谢。

  
    

附加-为简化问题描述,此程序可以正常启动并在任何Windows 10台式机上查找并加载dll。在VPS上运行的任何基于服务器的Windows OS(2012/16等)上,此操作均失败。我只需要让这个东西远程运行。真的很感谢您的帮助。

         

更多信息-我尝试在Azure上设置VM,该VM具有完整的win 10桌面安装,就像在笔记本电脑上一样,但仍然无法加载dll。真是莫名其妙...

         

下面是fuslogvw.exe的输出。如您所见,程序集加载似乎成功了

  
     

* Assembly Binder Log Entry  (5/10/2019 @ 7:38:37 AM) *

The operation was successful. Bind result: hr = 0x0. The operation completed successfully.

Assembly manager loaded from: C:\Windows\Microsoft.NET\Framework\v4.0.30319\clr.dll Running under executable C:\Trading\Trailer\Trailer\Trailer\bin\x86\Release\Trailer.exe --- A detailed error log follows.

=== Pre-bind state information === LOG: DisplayName = quickfix_net, Version=1.0.3748.13264, Culture=neutral, PublicKeyToken=null (Fully-specified) LOG: Appbase = file:///C:/Trading/Trailer/Trailer/Trailer/bin/x86/Release/ LOG: Initial PrivatePath = NULL LOG: Dynamic Base = NULL LOG: Cache Base = NULL LOG: AppName = Trailer.exe Calling assembly : FIXWrapper, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null. === LOG: This bind starts in default load context. LOG: Using application configuration file: C:\Trading\Trailer\Trailer\Trailer\bin\x86\Release\Trailer.exe.Config LOG: Using host configuration file: LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config. LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind). LOG: Attempting download of new URL file:///C:/Trading/Trailer/Trailer/Trailer/bin/x86/Release/quickfix_net.DLL. LOG: Assembly download was successful. Attempting setup of file: C:\Trading\Trailer\Trailer\Trailer\bin\x86\Release\quickfix_net.dll LOG: Entering run-from-source setup phase. LOG: Assembly Name is: quickfix_net, Version=1.0.3748.13264, Culture=neutral, PublicKeyToken=null LOG: Binding succeeds. Returns assembly from C:\Trading\Trailer\Trailer\Trailer\bin\x86\Release\quickfix_net.dll. LOG: Assembly is loaded in default load context.

1 个答案:

答案 0 :(得分:0)

希望我可以发表评论,但我只能发表答案,直到获得足够的分数。使用第三方库时,我遇到过类似的问题。我发现,如果库为32位,则使用任何cpu都会导致问题。在项目的属性页中,检查是否在“构建”选项卡下选中了32位首选标志。