2017-06-02 86 views
1

我有一個MVC應用程序,並在那裏添加了2個對我寫的dll類庫項目的引用。Visual Studio中的奇怪引用行爲

當我清理解決方案時,其中一個dll文件按預期刪除,但另一個保留。爲什麼是這樣?

在項目XML這裏是引用

<Reference Include="BusinessLayer"> 
    <HintPath>..\BusinessLayer\bin\Debug\BusinessLayer.dll</HintPath> 
</Reference> 
<Reference Include="DataTypes"> 
    <HintPath>..\DataTypes\bin\Debug\DataTypes.dll</HintPath> 
</Reference> 

正如你可以看到我已經在每個項目的bin/debug文件夾中引用生成的dll文件。

當我右鍵單擊解決方案並選擇清理時,業務層dll是不刪除的。

如果我右鍵單擊該引用並單擊屬性,路徑將設置爲本地文件,它位於我所在的項目的bin文件夾中,而不在其自己的bin文件夾中。

有誰知道如何解決這個問題?

+2

你爲什麼直接引用文件?您應該引用構建這些程序集的項目。它可能沒有被清理出來,因爲它們在被刪除時正在使用或者正在被使用。 –

回答

0

我能夠做重現這一具體行爲如下:

  1. 創建2個項目(ClassLibrary1的和ClassLibrary2)
  2. 一個新的解決方案構建解決方案
  3. 手動複製ClassLibrary2.dll在ClassLibrary1的bin文件夾
  4. 在ClassLibrary1項目的ClassLibrary2 DLL添加在ClassLibrary1的的bin文件夾中的參考

現在,當我重建或清理解決方案時,ClassLibrary1 bin文件夾中的ClassLibrary2.dll不會被刪除。

是否有可能發生類似意外發生的事情? (可能不完全相同的步驟)。

在這種情況下,在bin文件夾中手動刪除有問題的dll,刪除Visual Studio中的引用並再次添加它,但這次指向正確的位置。

正如Jeff在評論中提到的,如果項目在相同的解決方案中,添加對項目的引用而不是dll文件(添加引用/項目)。另一方面,如果其他庫不是這個解決方案的一部分,我會爲他們創建一些NuGet包,我將在我的網絡上的一個共享文件夾上託管,這將允許您通過NuGet添加依賴項,繞過手動添加對dll的引用。