2008-09-24 24 views
8

我使用P/Invoke從我的項目中調用非.NET dll,這意味着.dll必須始終存在於.exe的目錄中。在Visual Studio中指定非.NET依賴關係

有沒有辦法告訴這種依賴性的Visual Studio,使編譯時它會自動將.dll複製到輸出目錄,並會自動包含在安裝該.dll?或者我必須手動執行此操作?

回答

5

您可以複製/鏈接此文件(S)到項目,並在屬性窗口設置「生成操作」爲「無」和「複製到輸出目錄」爲「複製,如果新」或「始終複製」。

或者您可以使用「預生成事件」 &「生成後事件」,您可以指定任何批處理腳本。

我喜歡第二種選擇,因爲這種方式比第一種更靈活。

此外,您可以修改MSBuild文件並添加一個任務來複制文件。

8

您可以簡單地將.DLL添加到您的項目中。

選擇Properties窗格中該文件,並設置Build ActionContentCopy to Output DirectoryCopy if newer

+0

構建操作=「內容」比另一個響應中建議的構建操作=「無」更好。這是因爲您可以輕鬆地將「內容」文件包含在安裝項目中。 – Joe 2008-09-24 11:02:13

+0

是的,這正是我在迴應中提出的建議。 – 2008-09-24 12:28:27

+0

>這就是爲什麼我建議在我的回覆中 爲什麼我upvoted你的答案:) – Joe 2008-09-24 16:48:00

2

我想一個問題,只是增加一個.DLL的項目是您可能需要調試和發佈版本的不同版本的DLL的。你會認爲你可以將DLL的調試版本和發行版本都添加到文件中,並且根據配置排除不適當的版本,但是我找不到這樣做的方法。我正在使用Visual Studio 2010.我很積極,這在過去與VS6一起工作。