2011-02-18 169 views
7

我將一個工作項目從Visual Studio 2008轉換爲VS2010。 C++解決方案構建一個可執行文件和3個DLL,以及一個Windows安裝程序項目。無法在Visual Studio 2010安裝程序項目中添加自定義操作

轉換爲VS2010後,由於項目輸出組沒有密鑰文件,因此無法構建項目輸出組「主輸出」中名爲'xxxx(主動)的主輸出'的構建錯誤。 「

我刪除並重新添加了輸出組,然後嘗試添加自定義操作。可執行輸出未被列爲自定義操作的候選者。然後我注意到當我選擇可執行的「主要輸出」屬性時,「KeyOutput」屬性設置爲(無)並呈灰色。

重新訪問VS2008版本時,KeyOutput屬性未灰顯。我在MSDN上發現了一個無用修正的錯誤消息:

「刪除自定義操作並將其替換爲指向具有密鑰文件的項目輸出組的自定義操作。

很明顯,科技作家不知道如何解決它。請記住原始構建正確工作和安裝。我相信根本問題是爲什麼KeyOutput屬性被禁用 - 但爲什麼? (當查看「輸出」,它正確地顯示在每個項目中的EXE或DLL)

回答

2

經過進一步調查,我發現這是在Visual Studio 2010

一個錯誤。如果你爲一個項目指定輸出名稱不同於項目本身的名稱,它沒有做正確的事情。

要重現此,改變

項目屬性 - >連接器 - >常規 - > OUTPUTFILE從$(OUTDIR)$(的TargetName)$(TargetExt)是類似$(OUTDIR)foobar.exe

然後項目將KeyOutput值更改爲空,並且不適用於安裝中的自定義操作。除了使用默認的項目命名約定之外,沒有任何解決方法。

3

我有一個類似的問題,我想出了爲什麼安裝項目找不到鍵輸出文件。

我的項目Output Directory被定義爲$(SolutionDir)\ bin \ $(Platform)。 SolutionDir已經有一個尾部反斜槓,所以\ bin在路徑中放置了一個雙反斜槓。該項目將建設得很好,但安裝項目無法解決關鍵輸出。將輸出設置爲$(SolutionDir)bin \ $(Platform)\解決了該問題。

1

很晚的答案,但希望它可以節省一個人2個小時我用VS 2010砸我的頭牆上(這是一個可怕的一塊軟件 - 加載速度慢,每個devenv佔用300兆工作內存,現在這個bug !!!!! ????)在這裏 - 羅傑鄧恩是正確的是說,它是項目屬性 - >連接器 - >一般 - > OutputFile導致的問題 - 如果你有像這樣的東西$(OutDir)foobar.exe自定義操作barfs,如果您將其更改回$(OutDir)$(TargetName)$(TargetExt),它會再次運行!

解決方法是將宏$(TargetName)更改爲foobar,然後將用戶$(OutDir)$(TargetName)$(TargetExt)更改爲您的exe的自定義名稱。

$(TargetName)可以在 - Project properties-> Configuration Properties-> general-> TargetName中更改。

但這多麼浪費時間VS 2010.

+0

刪除這些額外的反斜槓'\\'爲我解決了這個問題。 – 2012-05-25 20:03:26

相關問題