2015-11-19 113 views
7

我有以下情況:
解決方案與爲什麼我的LocalCopy dll不是從參考項目中的參考項目本地複製的?

- Project 1: Web_Application (VB.NET Web Application) 
- Project 2: Code_Library (VB.NET DLL, Referenced in Project 1, References My_Reports, My_SQL) 
- Project 3: My_SQL (Embedded SQL scripts C# DLL, referenced in Code_Library) 
- Project 4: MyReports (C# dll, depends on ReportViewer), 
       referenced in Code_library, copyLocal = true 
       unfortunately depends on 
        - Microsoft.ReportViewer.WebForms.dll (copyLocal = true) 
        which depends on 
        - Microsoft.ReportViewer.Common.dll (copyLocal = true) 
        - Microsoft.ReportViewer.ProcessingObjectModel.dll (copyLocal = true) 
        - System.Web.DataVisualization.dll (copyLocal = true) 

中的ReportViewer DLL的設置在MyReports作爲以localcopy項目
在Code_Library,MyReports作爲被設置爲localcopy
在Web_Application,Code_Library & MyReports作爲設置到localcopy

這給出了以下非常不滿意的結果:
在MyReports中,R eportViewer的dll被localcopied到輸出目錄。
在Code_Library中,MyReports.dll位於輸出目錄中,但ReportViewer DLL不是...
在Web_Application中,CodeLibrary.dll & MyReports.dll位於輸出目錄中,但ReportViewer DLL不是...

爲什麼?
有什麼我可以做的(短添加的ReportViewer的dll對我的網絡應用程序項目的?

我絕對不希望中的ReportViewer添加爲depencency到Code_Library,從那時起我要更新2個位置,如果我想換到更高版本的ReportViewer的

+0

已打開連接問題https://connect.microsoft.com/VisualStudio/feedback/details/2035442 –

+0

開發計算機上的問題dll是GAC的一部分嗎?如果是這樣,刪除它們可能會幫助視覺工作室意識到滿足本地依賴性的需要。 – grek40

+0

@ grek4:他們很可能在GAC中。我無法刪除它們,我沒有管理員權限。其他開發者也沒有。我還安裝了SQL Server Express&Management Studio,所以我不能說這些程序集是否安裝了標準的.NET 2.0安裝程序。另外,如果在.NET 4.0應用程序池上運行,.NET 2.0 dll可能不會在生產計算機上。 –

回答

0

我有幾個選擇:

  1. GAC你不引用要複製
  2. 參考他們在app.config文件 - 阿拉this
  3. 添加postbuild事件將文件複製到你需要他們...

你可以檢查出其中的應用程序由enabling fusion logging查找的文件。

+0

選項1是不可能的,因爲我們的客戶服務器上沒有管理員權限。選項2非常令人不滿意,因爲多個Web_Application項目(針對不同客戶)使用Code_Library。選項3,固定路徑,只能在我的電腦上運行。使用相對路徑,只能在具有相同目錄結構的計算機上工作。 –

+0

您可能會在參考項目中嵌入間接引用ala [this](http://stackoverflow.com/a/13766575/2319909) –

+0

嗯,ilMerge會是一個想法。 –