0

我將包含70多個項目的Visual C++解決方案從VS2008 SP1遷移到VS2013 Update 5。 VS2008 SP1使用合併模塊,而在VS2013中,我使用此plugin來實現此功能。但是,合併模塊未檢測到我正在構建的dll的外部依賴關係。例如,其中一個dll依賴於ace.dll(並在鏈接器 - >輸入中指定ace.lib),但未檢測到依賴關係。在VS2008中,檢測到相同的依賴關係。任何想法什麼可能是錯誤的或在哪裏尋找?Visual Studio 2013中的MSM合併模塊:未檢測到依賴項

回答

0

我很驚訝,它以前在VS 2008安裝項目中檢測到依賴關係。據我所知,VS 2008開發項目之間沒有任何聯繫,您可能會使用它來構建代碼和安裝項目中的依賴關係。

a)您可以將文件從任何位置拖放到安裝項目中。沒有要求VS安裝項目從VS 2008項目中的文件中生成MSI文件。

b)對特定Dll的依賴不會導致該Dll被包含在設置中,因爲大量的依賴Dll包含在單獨的可再發行組件中。這些Dll甚至可能是安裝項目的先決條件,這就是它們的安裝方式。您不希望(例如)MSI安裝程序中的每個Crystal Reports Dll,SQL Dll等,因爲它們需要通過可再發行組件或它們自己的合併模塊進行安裝。沒有每個Dll的大數據庫以及應該使用哪個可再分發或合併模塊來部署它,所以VS項目肯定不知道。

c)並不是所有的依賴關係都可以通過查看二進制文件來檢測。 COM依賴不會在二進制文件的任何位置列出,因爲它們通過guid動態鏈接,所以它們永遠不會被這種方式檢測到。

一般來說,壞消息是開發人員需要知道哪些依賴項需要單獨安裝,哪些依賴項需要安裝redist,哪些是standal Dll,比如那些屬於操作系統的部分,從不需要安裝。

相關問題