2009-10-03 191 views
1

我有一個Visual Studio中的C#項目正在構建一個DLL,另一個控制檯項目包括第一個作爲參考。這些都在相同的解決方案。C#DLL不跨項目更新

問題是,當我向DLL添加方法時,然後重建控制檯項目似乎沒有把它們拿起來。

例如,在DLL中我有一個類轉換器。如果我添加一個方法

public static void test() {} 

它只是沒有顯示在控制檯應用程序中。智能感知不會自動完成它,如果我手動鍵入它給出編譯器錯誤。

如果我進去並刪除dll文件,然後重新生成的作品(或更好的是,刪除bin和obj目錄),但似乎相當激烈。

我敢肯定這是一個基本的錯誤,但我似乎無法找到一些谷歌搜索後的解決方案。

回答

8

你如何添加參考?作爲項目引用還是通過瀏覽到DLL?如果您使用的是後者,那麼它會將其複製到本地控制檯應用程序的bin目錄,並且不會刷新它,除非您手動刪除它。如果您將其添加爲項目參考,則會在需要時將其複製。

+0

肯定是後者。改爲項目參考似乎已經解決了這個問題。非常感謝。 – manobes 2009-10-04 12:50:03

0

將對dll的引用更改爲Project,而不是輸出。

0

這肯定是出乎意料的行爲。聽起來這兩個項目之間的關係在某種程度上被打破了。想到兩個問題。

  • 可能的問題與參考。嘗試刪除解決方案資源管理器中的引用,並閱讀引用並查看是否修復了這些內容。當你重新添加時,確保它是一個項目引用而不是文件引用。
  • 您的項目中的文件的時間戳可能已關閉。看看他們是否在未來。
6

確切的事情發生在我身上的一次項目 - 事實證明,生成命令沒有配置生成這些DLL。
檢查Build - Configuration Manager,並確保該項目被選中:

Configuration Manager Screenshot
(Image from msdb - Setting the Build Configuration)

+0

這是我的問題。由於某種未知的原因,Visual Studio幾乎沒有選中我的配置管理器中的所有「Build」複選標記。我查看了舊版本的配置管理器,他們都被檢查。我在最新版本中檢查了它們,它的內容都是hunkey dorey(一個愚蠢的,古怪的英語成語'OK')。 – 2013-09-27 13:27:53

0

檢查其中包含引用的文件夾。它是否包含一個帶有相對路徑的刷新文件?如果是這樣,並且如果相對路徑指向的位置中的程序集名稱與應該自動更新的(項目)引用中的程序集名稱相同,那麼這些引用不再自動更新!您最終得到的是對刷新文件中包含的相對路徑中存在的程序集的靜態引用。 您可能還需要刪除SLN文件projectreferences項,並添加引用重新

0

接近項目的VisualStudio和 再次重建你的DLL(其他項目的VisualStudio)

0

檢查你沒有ddl在項目的bin文件夾中。雖然我通過瀏覽DLL來添加參考,但我忘記了我手動將一個版本粘貼到該文件夾​​中。無論我清理和重建多少次,似乎都沒有更新。

刪除該DLL並重新引用修復了問題。

0

要注意的一件事是項目的目標框架,如果您編譯的項目A的目標框架與項目B的目標框架不同,並且它引用項目A的dll,則可能遇到此類問題。因此,確保兩個項目的目標框架相同。

0

我討厭打敗一個死的SO問題,但在原始問題8年後,以上都沒有解決我的問題,我的問題是在VS2013,但解決它我只是刪除並重新添加引用調用它的項目中的DLL。

我希望這有助於一些人在新的VS領域有同樣的問題。

+0

沒有爲我工作 – user3800527 2017-11-30 09:30:51