我使用P/Invoke從我的項目中調用非.NET dll,這意味着.dll必須始終存在於.exe的目錄中。在Visual Studio中指定非.NET依賴關係
有沒有辦法告訴這種依賴性的Visual Studio,使編譯時它會自動將.dll複製到輸出目錄,並會自動包含在安裝該.dll?或者我必須手動執行此操作?
我使用P/Invoke從我的項目中調用非.NET dll,這意味着.dll必須始終存在於.exe的目錄中。在Visual Studio中指定非.NET依賴關係
有沒有辦法告訴這種依賴性的Visual Studio,使編譯時它會自動將.dll複製到輸出目錄,並會自動包含在安裝該.dll?或者我必須手動執行此操作?
您可以複製/鏈接此文件(S)到項目,並在屬性窗口設置「生成操作」爲「無」和「複製到輸出目錄」爲「複製,如果新」或「始終複製」。
或者您可以使用「預生成事件」 &「生成後事件」,您可以指定任何批處理腳本。
我喜歡第二種選擇,因爲這種方式比第一種更靈活。
此外,您可以修改MSBuild文件並添加一個任務來複制文件。
您可以簡單地將.DLL添加到您的項目中。
選擇Properties
窗格中該文件,並設置Build Action
到Content
和Copy to Output Directory
到Copy if newer
。
我想一個問題,只是增加一個.DLL的項目是您可能需要調試和發佈版本的不同版本的DLL的。你會認爲你可以將DLL的調試版本和發行版本都添加到文件中,並且根據配置排除不適當的版本,但是我找不到這樣做的方法。我正在使用Visual Studio 2010.我很積極,這在過去與VS6一起工作。
構建操作=「內容」比另一個響應中建議的構建操作=「無」更好。這是因爲您可以輕鬆地將「內容」文件包含在安裝項目中。 – Joe 2008-09-24 11:02:13
是的,這正是我在迴應中提出的建議。 – 2008-09-24 12:28:27
>這就是爲什麼我建議在我的回覆中 爲什麼我upvoted你的答案:) – Joe 2008-09-24 16:48:00