上面的答案似乎都不適用於我,也許是因爲我在VS2015上,但是這讓我感到很有理由在此問題上添加自己的解決方案。
我的具體情況與@Eternal21相同 - 我有一個WPF UI使用客戶端庫,它是通過nuget將SQLite添加到其中的客戶端庫。而且,是的,問題在於Interop.dll未被複制到啓動應用程序(即沒有安裝SQLite的WPF UI)。
如果您急於使用,簡單地使用nuget將SQLite添加到WPF項目的解決方案是一個快速簡便的解決方案。
我的一個稍微笨拙的解決方案使用XCOPY,但具有複製x86和x64目錄的優點,並且還可以處理Debug和Release版本。它的缺點是它包含硬編碼的項目名稱。我可以看到你如何使用宏來擺脫第一個宏,但我不能輕易看到如何擺脫第二個,所以如果項目名稱改變,你將不得不手動改變它(但這是相當罕見的)。
我的解決方法是在啓動項目的生成後,使用這些命令XCOPY:
xcopy $(SolutionDir)DALProject\bin\$(ConfigurationName)\x64\SQLite.Interop.dll $(SolutionDir)WPFProject\bin\$(ConfigurationName)\x64\*.* /C /F /S /E /Y
xcopy $(SolutionDir)DALProject\bin\$(ConfigurationName)\x86\SQLite.Interop.dll $(SolutionDir)WPFProject\bin\$(ConfigurationName)\x86\*.* /C /F /S /E /Y
/C - 繼續複製即使(也許這是沒有必要的)錯誤。
/F - 顯示正在複製的文件的完整路徑(可省略以清除構建輸出)。
/S - 複製子目錄(這是我能夠創建/ x86和/ x64文件夾的唯一方法)。
/E - 複製目錄和子目錄(可能重複/ S)。
/Y - 如果目標文件已存在,則禁止提示。
我設置它只在成功構建時運行,它對我來說是一種享受。希望它能幫助別人。
有趣的是,我看到他們在那裏。那麼,它將它們複製到在運行時無法找到的地方?我想知道它是否適用於機器特定的版本。我嘗試了x86和x64版本,但有錯誤。可能是我的一個問題,不確定。 – Vimes 2014-11-11 17:49:21
*在運行時發現*。如果我刪除這些文件夾,則會出現加載錯誤。如果我不這樣做,它會起作用。我只發現這一點,因爲我是從輸出目錄複製文件到另一個位置運行,而我沒有複製子目錄。 – Richard 2014-11-12 13:39:16
不適合我。我在運行時遇到了DllNotFoundException。您的所有項目都是以AnyCPU的形式構建的嗎? – Vimes 2014-11-12 18:59:45