簡體   English   中英

Visual Studio 2010程序集參考問題

[英]Visual Studio 2010 Assembly Reference Issue

我正在使用Visual Studio 2010和C#構建WinForms應用程序和類庫。 我有一些用於所有產品的通用庫,然后有一些針對我的應用程序的產品特定庫。 我的程序集都不是GAC的。 所有項目都將其輸出從各自的bin \\ Debug文件夾復制到一個公共的Repository文件夾,並且所有程序集引用均指向該Repository文件夾。

例如,Common.DAL.dll,Common.BLL.dll,Product.DAL.dll,Product.BLL和Product.exe

程序集之間的引用通常是這樣的:

  • Product.exe包含對Product.BLL的引用
  • Product.BLL包括對Common.BLL和Product.DAL的引用
  • Product.DAL包括對Common.DAL的引用
  • Common.BLL包括對Common.DAL的引用

當所有這些都包含在同一個解決方案中時,構建依賴關系如下所示:

  • Common.BLL取決於Common.DAL
  • Product.DAL取決於Common.DAL
  • Product.BLL取決於Common.BLL和Product.DAL
  • Product.exe取決於Product.BLL

這使得構建順序如下所示:

  1. Common.DAL
  2. Common.BLL
  3. Product.DAL
  4. Product.BLL
  5. Product.exe

通常,在嘗試運行應用程序時,出現以下錯誤:

無法加載文件或程序集“ Common.DAL,版本= 1.0.0.0,區域性=中性,PublicKeyToken = 4e5249f2e70e1da8”或其依賴項之一。 該系統找不到指定的文件。

我將問題歸結為以下事實:並非從解決方案構建的所有程序集最終都位於Product.exe的bin \\ Debug文件夾中。

如果我清理解決方案,然后重新生成,文件將顯示如下:

  • Common.DAL \\ bin \\ Debug包含Common.DAL.dll
  • Common.BLL \\ bin \\ Debug包含Common.BLL.dll和Common.DAL.dll
  • Product.DAL \\ bin \\ Debug包含Common.DAL.dll和Product.DAL.dll
  • Product.BLL \\ bin \\ Debug包含Common.BLL.dll,Common.DAL.dll,Product.BLL.dll和Product.DAL.dll
  • 但是Product.exe \\ bin \\ Debug僅包含Product.exe,Product.BLL和Product.DAL。 它缺少通用程序集 因此,當我運行Product.exe時,出現上面列出的錯誤。

我已經檢查了所有項目和屬性的屬性。 它們都使用.NET Framework4。對程序集的所有引用的“特定版本”屬性設置為false,“復制本地”屬性設置為true。

我可以通過在Product.exe項目中添加對Common程序集的引用來強制將缺少的程序集復制到Product.exe \\ bin \\ Debug,但是由於Product.exe沒有明確使用Common程序集,因此感覺更像是比解決方案更花力。

我仔細閱讀了MSDN和Visual Studio文檔,以了解是否可以找出影響或影響引用程序集的復制的方法,並且在SO中搜索了類似問題,但沒有發現任何有用的方法。

我不知所措,下一步該去哪里。

在您的問題中,您說:

我可以通過在Product.exe項目中添加對Common程序集的引用來強制將缺少的程序集復制到Product.exe \\ bin \\ Debug,但是由於Product.exe沒有明確使用Common程序集,因此感覺更像是比解決方案更花力。

我不同意。 這並不完美,但是Visual Studio有時甚至需要這種內部解決方案。 這取決於您如何使用該類。

盡管您可能認為這有點不合時宜,但似乎您的其他(敢於我說“ kludgy”)要求(每個解決方案一個項目)使事情看起來很不合時宜

僅當裸裝配件相對穩定且在解決方案之外時,才應引用它們。

在解決方案內部,從“項目”選項卡中引用它們。 這將使VS配置項目之間正確的依賴關系和構建順序。

在當前設置中,驗證項目依賴關系(解決方案|屬性)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM