我們正在創建一個圍繞非託管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