2011-04-20 46 views
1

我有一個WinForms項目和解決方案,一些類庫項目也添加到相同的解決方案。在WinForms中混淆DLL使用

WinForms項目使用類庫中的代碼。我一直在使用這個應用程序大約一年,它一直運行良好。

但是,今天,我向類庫中添加了一些功能,但這些更改不會出現在正在運行的應用程序中。我也嘗試在其中一個類中添加一個新的公共方法,但該方法不會在Intellisense中爲應用程序顯示。

這應該是非常簡單的解決,但隨着WinForms在幕後自動複製DLL的方式,我不知道問題出在哪裏。我所看到的一切似乎都適合我。代碼繼續工作,因爲它認爲它使用的是舊版本的DLL。但是我的WinForms應用程序的Bin目錄中的DLL有今天的日期。

任何人都可以推薦我應該在哪裏尋找解決方案嗎?

回答

1

根據Michael's answer您可能會發現程序集引用實際上並不是一個項目引用,而是一個特定的路徑,而不是您編譯到的路徑(例如bin \ Release)。

此外,這可能聽起來微不足道,但仔細檢查一下,當您使用Build函數時,解決方案的Configuration Properties實際上正在構建項目!我已經關閉了建築項目,忘記了我這樣做,然後當他們的變化不在我的應用程序中時,我感到困惑!

+0

謝謝,但我覺得整個過程設計得不好。什麼是設置參考的正確方法?我是否參考項目或編譯的DLL? Debug和Release版本的答案是否改變? – 2011-04-20 18:14:46

+1

如果您的代碼是解決方案的一部分,那麼您應該使用項目引用,因爲它可以確保您在構建類型之間不會有任何問題。雖然增加了缺點,但可能會增加編譯時間。好處是,如果你的依賴關係發生了變化,你的依賴關係將被自動重建。 – Reddog 2011-04-20 18:19:34

0

您是否已將任何類庫添加到GAC中?

如果在GAC中使用與AssemblyVersion相同的強名稱的Assembly,將使用此代替解決方案中的那個。

+0

我很確定我沒有。但是,再次,這整個佈局似乎已經精心打造成一個黑盒子,對於偶然的觀察者來說是一個完全神祕的東西。 – 2011-04-20 17:49:42

2

我會進入項目屬性,刪除引用,重新添加它來驗證你的dll是否來自你認爲它的位置。 Clean &重建項目

+0

謝謝,但我發現整個過程設計得不好。什麼是設置參考的正確方法?我是否參考項目或編譯的DLL? Debug和Release版本的答案是否改變? – 2011-04-20 18:16:46

+0

如果您正在積極修改包含的項目,請將其添加爲項目參考。 – Michael 2011-04-20 18:43:11