C# 从Windows 10编译VS2017在Windows 7上部署并。。。未找到DLL
2.5天,我试图找出错误的根源,如C# 从Windows 10编译VS2017在Windows 7上部署并。。。未找到DLL,c#,c++,visual-studio,dll,windows-7,C#,C++,Visual Studio,Dll,Windows 7,2.5天,我试图找出错误的根源,如 Could not load file or assembly "mydll.dll" or one of its dependencies. The specified module could not be found 该项目是一个基于Windows C#的应用程序。该DLL是在项目内部的C++库中生成的。我使用VS2017 Enterprise在Windows 10 64位下编译,在Windows 7 64位下部署时遇到问题(在Windwos 10下部
Could not load file or assembly "mydll.dll" or one of its dependencies.
The specified module could not be found
该项目是一个基于Windows C#的应用程序。该DLL是在项目内部的C++库中生成的。我使用VS2017 Enterprise在Windows 10 64位下编译,在Windows 7 64位下部署时遇到问题(在Windwos 10下部署效果很好…)。所有.NET libs/exes/plugins都以.NET 4.5.2(安装在Deployment计算机上)为目标。图书馆的使用
Windows SDK Version: 8.1
Platform Toolset: Visual Studio 2017 (v141)
该项目生成了一个msi安装程序,我在部署计算机上成功地安装了它。当然dll在那里
所以我用进程监视器观看了程序的执行。dll似乎被加载了好几次。
我最后一次看到以下内容
"10:31:13.7703319 AM","App.exe","1412","CloseFile","C:\Program Files (x86)\Vendor\Programm\ucrtbased.dll","SUCCESS",""
"10:31:13.7703575 AM","App.exe","1412","ReadFile","C:\Progra mFiles (x86)\Vendor\Programm\ucrtbased.dll","SUCCESS","Offset: 1,452,544, Length: 5,120, I/O Flags: Non-cached, Paging I/O, Synchronous Paging I/O, Priority: Normal"
"10:31:13.7721639 AM","App.exe","1412","CreateFile","C:\Program Files (x86)\Vendor\Programm\api-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7722398 AM","App.exe","1412","CreateFile","C:\Windows\SysWOW64\api-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7723496 AM","App.exe","1412","CreateFile","C:\Windows\system\api-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7724133 AM","App.exe","1412","CreateFile","C:\Windows\api-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7725133 AM","App.exe","1412","CreateFile","C:\Windows\SysWOW64\api-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7725731 AM","App.exe","1412","CreateFile","C:\Windows\SysWOW64\api-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7726340 AM","App.exe","1412","CreateFile","C:\Windows\api-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7726991 AM","App.exe","1412","CreateFile","C:\Windows\SysWOW64\wbem\api-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7727622 AM","App.exe","1412","CreateFile","C:\Windows\SysWOW64\WindowsPowerShell\v1.0\api-ms-win-core-localization-l1-2-0.dll","NAME NOT FOUND","Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a"
"10:31:13.7729093 AM","App.exe","1412","CloseFile","C:\Program Files (x86)\Vendor\Programm\mydll.dll","SUCCESS",""
该api-ms-win-core-LOCATIONAL-l1-2-0.dll确实由dependency walker和
API-MS-WIN-CORE-FILE-L1-2-0.DLL
API-MS-WIN-CORE-FILE-L2-1-0.DLL
API-MS-WIN-CORE-LOCALIZATION-L1-2-0.DLL
API-MS-WIN-CORE-PROCESSTHREADS-L1-1-1.DLL
API-MS-WIN-CORE-SYNCH-L1-2-0.DLL
API-MS-WIN-CORE-TIMEZONE-L1-1-0.DLL
API-MS-WIN-DOWNLEVEL-ADVAPI32-L1-1-0.DLL
API-MS-WIN-DOWNLEVEL-OLE32-L1-1-0.DLL
API-MS-WIN-DOWNLEVEL-SHLWAPI-L1-1-0.DLL
GPSVC.DLL
MSISO.DLL
谷歌告诉我所有这些都与这个问题无关。。。
现在,在linux下使用
nm-D
和ldd
只需2.5分钟,就可以完成2.5天的任务 经过3天的努力,我从Windows 10高效地瞄准了Windows 7,我分享了我的经验,并得出以下答案:微软开发人员从未预见到这一点。MS提供了一些黑客攻击,但无法实现可靠的开发链
Richard Criten的回答顺便说一句,与此问题无关。dll是一个调试dll,因此您必须尝试部署程序和/或dll的调试版本。未安装开发环境,调试库不可用,无法重新分发。创建发布版本并重试。一旦你有了一个发布版本,如果它仍然不起作用,你将需要安装VS2017提供的运行时redist包。因此,负向下投票的问题是,他们至少应该告诉他们为什么向下投票。理查德·克里滕(Richard Criten)的评论(如果与否决票有关的话)不是问题的原因,因为发布版本根本不能改变问题。经过三天的努力,从Windows10iCOM以Win7为目标,微软开发人员没有预见到这个用例。事实证明,您确实会遇到这里描述的问题(除其他问题外)
甚至不要开始告诉我关于DependecyWalker的事
-您是否查看了“新”?:)