2012-02-03 173 views
0

Hereis形勢的變化。 我添加了對這些DLL的引用。然後我建立。一切安好。項目的參考DLL的路徑「魔法」,當DLL被刪除

如果我然後刪除libs文件夾並重建我的解決方案,編譯仍然成功!奇怪 - 我會期待編譯錯誤,因爲庫dll不在那裏!

但看着Visual Studio中的引用屬性,我看到參考路徑已從.\libs\foo.dll更改爲myproject\bin\Debug\foo.dll。所以它從它的舊版本輸出中選取引用的DLL。

如果我在文本編輯器中打開myproject.csproj,我看到參考的HintPath仍然是.\libs\foo.dll。如果我重新創建libs文件夾,visual studio仍然使用myproject\bin\Debug\foo.dll(它不會恢復到我想要的實際DLL)

這是預期的行爲嗎? 有沒有辦法阻止這種行爲,因爲它會導致我的問題 - 特別是當我想用不同版本的libs重建myproject時:有一半的時間我發現我使用的是不是我想要的版本。

+0

可能的[Visual Studio中的HintPath vs參考路徑]的副本(http://stackoverflow.com/questions/1882038/hintpath-vs-referencepath-in-visual-studio) – 2012-02-03 10:15:46

+0

請參閱下面的答案 – 2012-02-03 10:51:40

+0

如果它傷害,不要這樣做。從將DLL複製到/ libs開始,將其從原始構建位置引用。如果您因某種原因需要複製,請將其複製到源代碼管理中。如果他們頻繁更改以使其不切實際,請將創建它們的項目添加到您的解決方案中。 – 2012-02-03 13:09:02

回答

0

這並不神奇。您的DLL的Copy Local屬性可能設置爲true,就是這樣。
將其設置爲false會讓您獲得所需的行爲。