我们正在创建一个围绕非托管DLL的C#包装。非托管DLL包含32位和64位版本。我们将托管包装保存在自己的项目中,以便我们可以将其构建为独立的组件,并在解决方案中重复使用它。为32位和64位非托管DLL创建托管包装
但是这会导致一些问题。由于非托管DLL对于32位和64位版本都具有相同的名称,所以我们在将正确的非托管DLL移动到输出(bin)目录时遇到问题。如果构建配置是x86,我们想要复制32位版本和64位64位的x64。只需一个处理器架构就很容易实现。我们只在我们的项目中包含非托管DLL,并在文件中将本地复制设置为true。但既然我们需要瞄准它的两个更棘手的问题。
我们发现此链接Targeting both 32bit and 64bit with Visual Studio in same solution/project但这似乎引用了一些已存在于机器上的DLL。我们希望将正确版本的DLL复制到输出目录(bin)。
任何有关如何解决这个问题的技巧或技巧都值得欢迎。
嗨,谢谢你的回复。正如您在包装项目的项目文件中所建议的,我们已经实现了afterbuild目标。但是,从引用包装器项目的其他项目中,非托管DLL不会与包装器DLL一起复制到bin目录中。有关如何实现此目的的任何提示? – flalar 2010-01-20 11:48:43
通常,我们为所有间接引用和/或动态加载的程序集所做的操作是使用后构建命令将它们从其项目TargetDir中推送到公共输出文件夹。然后,任何需要它们的项目都会使用前/后生成命令将它们复制到TargetDir。 例如推: XCOPY “$(TARGETDIR)$(TargetFileName)” “$(SolutionDir)PluginOutput \”/ E/Y 例如拉: XCOPY “$(SolutionDir)PluginOutput \ *。dll” 将“$(TARGETDIR )“/ E/Y – duckworth 2010-01-20 18:52:27
你从哪里获得FreeImage DLL的x64版本?我一直在寻找它一段时间,但一个没有接缝存在! – 2010-02-08 19:06:00