一般来说,我是c#和Matlab以外编程的新手,并且花了很长时间研究这个问题。
我的程序使用了几个第三方的cli和一些本地的C dll,都是x64的。它们都在正确的文件夹中并被引用,我的程序的构建目标平台也被设置为x64。目标框架是。net 4.7.2。在VS2022。如果我选择"任意cpu",程序在调试和发布模式下都可以正常工作。在调试/发布下拉列表旁边。(这让我很困惑,可能是错误的来源。你能帮我理解构建目标平台和调试/发布目标平台之间的区别吗?为什么一个必须是x64,另一个必须是"任意cpu"?-它不编译,如果我设置它,即。)
当我在调试时,我发现如果一个名为"privateinternal"的DLL无法加载其中一个cli。来自SDK的文件不在文件夹中。所以我把它放在文件夹里,但是我不能引用它,我不知道它是做什么的。该程序在VS中工作良好,只要"PrivateInternal">
我的问题是:当我发布应用程序时,我可以安装它和所有东西。但是当我用上面提到的CLI按下启动代码的按钮时,它返回"指定的模块无法找到";例外。
先。FileNotFoundException:无法加载文件或程序集'Thorlabs.MotionControl.DeviceManagerCLI.dll'或其依赖关系。找不到指定的模块。文件名称:"Thorlabs.MotionControl.DeviceManagerCLI.dll"StageControlUI.Form1.GetSerialNumbers ()StageControlUI.Form1。btn_connect_Click(对象发送者,EventArgs e)…
我怀疑这是由于"PrivateInternal"DLL没有被引用,但它也可能是因为我以某种方式发布错误。我研究了WinForms和cli的发布问题和注意事项(例如调试程序集加载失败)。但我希望你能指导我如何从我现在的立场出发?
对于AnyCPU/x64,您谈论的是应用程序应该运行的目标平台。例如,如果你在AnyCPU上构建你的项目,你希望你的应用程序可以在任何设备上运行,而不管CPU的架构是什么。
我猜你的模块没有找到的原因是你没有在配置管理器中为你的项目选择正确的构建平台!
打开配置管理器:右键单击解决方案->配置管理器…
在这里您需要选择指定的构建模式和您想要构建的平台。现在检查是否所有的项目都有正确的映射。希望对你有帮助。