如何在客户端解决方案引用我的项目时部署依赖的DLL
本文关键字:部署 依赖 DLL 项目 我的 客户端 解决方案 引用 | 更新日期: 2023-09-27 18:09:04
我有一个c#项目,它构建了一个库DLL, myLib.dll。此DLL依赖于第三方DLL, dep.dll(我提供但不构建)。
我希望其他人能够通过将我的项目添加到他们的解决方案并引用它来使用我的库。添加我的项目作为引用会自动将myLib.dll复制到他们的应用程序的目标目录,但当然不会将dep.dll与它一起复制。
请记住,我无法控制我的项目在他们的代码树中的位置,DLL也无法知道它是从哪里复制的。
我能看到的唯一解决方案是强制用户添加一个构建事件,将dep.dll复制到他们的目标目录。我们不能假设用户可以创建环境变量。
这是非常不可取的几个原因(它不是真正的一个依赖-我简化了事情,我不希望他们不得不关心我的项目中的依赖关系,而且它非常脆弱-添加一个额外的依赖DLL到我的项目将要求每个人更新他们的构建脚本)。
我不能直接加载dep.dll,因为我不知道它在哪里-我的构建脚本可以将它复制到与myLib.dll相同的目标目录,但他们运行的myLib.dll的实际版本将被复制到其他地方。
我也不能使deep .dll直接成为引用(可能是因为它不是。net程序集)。我只是得到"错误加载代码完成信息为深度从dep. dll。可执行文件(.exe)或库(.dll)的格式无效".
所以有任何方法有依赖的DLL只是无缝地复制与myLib.dll当客户端构建他们的应用程序?
你能把dep.dll像。cs文件一样添加到你的项目根目录吗?将"生成操作"设置为"无",并将"复制到输出目录"设置为"如果更新则复制"。