簡體   English   中英

Visual Studio 安裝項目 - 檢測到的依賴項

[英]Visual Studio Setup Project - Detected Dependencies

我對 VS2010 中的舊設置項目有問題。 請不要怪我使用它。 這是公司的決定,無法更改。 夠窮我必須處理它。

我認為我們得到的東西很常見:一些項目的解決方案。 項目引用程序集。 其中一些是第 3 方組件。 它們都被引用到/來自同一個單獨的文件夾(不是 GAC 或類似 C:\\Programs ... 的東西)。 我們只是不引用已安裝的版本。 我們想把它們都放在一個地方。

重點來了……項目本身指向我們想要的文件夾。 構建和運行很好。 當我檢查安裝項目時,一些 3rd 方程序集來自我們的特定文件夾,其他的來自 C:\\Programs...

我只是不知道為什么。 看起來我無法影響這一點。 即使手動編輯 .vdproj 文件(可以設置“GAC:FALSE”)也無濟於事! 我們需要在我們的文件夾中引用特定的 *.dll。

有沒有人對此有想法? 到目前為止我還沒有找到任何東西...

干杯! 詹斯

這就是 VS 的行為方式。 即使您告訴他在您自己的文件夾中搜索您的第 3 方 dll,如果它在 GAC 中找到相同的 dll,它也會從那里引用它。 在 GAC 中沒有dll 的計算機上,它將從您的文件夾中引用它。 換句話說,如果您部署應用程序的計算機在您引用它們的文件夾中具有所有 3rd 方程序集,並且該文件夾存在於目標計算機上,則即使 dll 不在目標計算機中,應用程序也不會崩潰您在自己的機器上看到,並將使用文件夾中的程序集。

也許有人擺弄了 Visual Studio 中的默認引用路徑。 如果你看這篇文章,大約一半的地方解釋了用於定位引用程序集的注冊表項:

http://msdn.microsoft.com/en-us/library/wkze6zky(v=vs.100).aspx

我認為 VS 搜索機制會在構建時遍歷這個列表,你最終可能會得到一個相當奇怪的組合,特別是如果某些程序集對其他程序集有依賴關系並且程序集版本不同。 因此,如果您從需要具有特定版本的其他程序集的某個程序集開始,它將追蹤該目錄列表,直到找到它們。

我認為 VS 默認從 GAC 獲取程序集以供參考是不正確的。 .NET 運行時將在您運行程序時執行此操作,但在開發時,例如,所有 MS 程序集都是從 SDK 安裝中引用的,而不是從 GAC 中引用的。 GAC 是運行需要這些程序集的程序的存儲庫,而不是開發構建的參考。

暫無
暫無

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

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