我有一个C#项目,它构建了一个库DLL,myLib.dll。此DLL依赖于第三方DLL dep.dll(我提供但不构建)。
我希望其他人能够通过将我的项目添加到他们的解决方案并引用它来使用我的库。将我的项目添加为引用会自动将myLib.dll复制到其应用程序的Target目录中,但当然不会复制dep.dll。
请记住,我无法控制项目在代码树中的位置,并且DLL无法知道它的复制位置。
我能看到的唯一解决方案是强制用户添加将dep.dll复制到其目标目录的构建事件。我们不能假设用户可以创建环境变量。
这是非常不受欢迎的原因有几个(它不是真正的依赖 - 我简化了一些事情,我不希望他们必须关心我的项目中的依赖关系,而且它'非常脆弱 - 在我的项目中添加一个额外的依赖DLL将需要每个人更新他们的构建脚本。)
我无法直接加载dep.dll,因为我不知道它在哪里 - 我的构建脚本可以将它复制到与myLib.dll相同的目标目录但是myLib.dll的实际版本它们的运行将被复制到其他地方。
我也不能直接将dep.dll作为引用(可能因为它不是.NET程序集)。我刚刚得到#34;从dep.DLL加载dep的代码完成信息时出错。可执行文件(.exe)或库(.dll)的格式无效"。
当客户端构建应用程序时,有没有办法让依赖DLL与myLib.dll无缝复制? [如果重要的话我会使用Sharp Develop。]
答案 0 :(得分:1)
是否可以将dep.dll作为.cs文件之类的文件添加到项目根文件夹中。将“构建操作”设置为“无”并将“复制到输出目录”设置为“如果较新则复制”。