2010-01-21 58 views
2

我試圖設置我的環境來開發,調試和部署Windows桌面小工具。我在我的項目中遇到了一些障礙,當配置設置爲「Debug」時,我無法在小工具上運行構建。如果配置設置爲「發佈」,則構建將執行以下自定義任務:MSBuild「調試」配置不能在VS 2010 Beta 2中工作

  1. 將小工具內容複製到單獨的文件夾。
  2. 縮小/混淆javascript文件,刪除註釋和空白。
  3. 將文件打包到CAB文件中。
  4. 用數字證書籤署CAB文件。

這將運行得很好,我的「調試」配置具有以下任務定義

  1. 複製小工具文件夾AppData\Local\Microsoft\Windows Sidebar\Gadgets\
  2. 使用IDesktopGadget界面啓動小工具。

如果我將這兩個任務複製到「發佈」配置,它們運行得很好 - 沒有任何問題。我試過創建一個名爲「測試」的單獨配置,從「發佈」配置複製。

如果我嘗試建立不是「釋放」其他任何配置,我得到一個即時消息說「構建成功」,但沒有任務已經運行在所有。

編輯:我已經開始了賞金,因爲我仍然有與VS 2010 RC相同的問題,這是非常令人沮喪的。

進一步編輯:
感謝John我能夠調試構建過程。這使我認識到,與條件調試<Target>元素正被完全忽略(甚至不處理)。當我換我<Target>元素的位置,它的工作:

<Target Name="Build" Condition="'$(Configuration)' == 'Release'"> 
    <!-- 
     <Obfuscate PathToJasob="C:\Program Files (x86)\Jasob.com\Jasob 3.5" Path="$(GadgetFolder)" Output="$(GadgetName)_obf" log="jasob_log.txt" /> 
    --> 
    <BuildGadget BuildFormat="CAB" Path="$(GadgetFolder)" Target="$(GadgetName).gadget" /> 
    <SignGadget CertName="Cert1" TimestampURL="http://timestamp.comodoca.com/authenticode" Target="$(GadgetName).gadget" /> 
</Target> 
<Target Name="Build" Condition="'$(Configuration)' == 'Debug'"> 
    <CopyToGadgets GadgetFolder="$(GadgetFolder)" GadgetName="$(GadgetName)" /> 
    <RunGadget GadgetName="$(GadgetName)" /> 
</Target> 

所以它看起來像第二<Target Name="Build">元素覆蓋第一,儘管Condition屬性存在。我能做什麼?

+0

是什麼,當你做診斷日誌生成輸出? (通過'/ verbologies:diag'作爲msbuild命令行的標誌) – 2010-02-12 20:13:10

+0

在運行調試版本之前,您是否刪除了以前創建的所有dll和pdb文件?只是爲了確保msbuild不認爲它們已啓動-至今?您是否還從卷影副本緩存(位於「c:\ documents and settings \ \ local settings \」中的某處)刪除了這些文件? – 2010-02-13 19:05:33

回答

2

喬建議:

改變你這樣的輸出路徑,看看是否能解決問題:

<OutputPath>bin\Debug\</OutputPath> 

更新

你試過運行msbuild /verbosity:diagnostic

你可以試試看,並顯示輸出?

第二次更新

讓一個目標「構建」,然後進行兩個任務這一目標:

<Target Name="Build"> 
    <CallTarget Targets="BuildRelease" Condition="'$(Configuration)' == 'Release'" /> 
    <CallTarget Targets="BuildDebug" Condition="'$(Configuration)' == 'Debug'" /> 
</Target> 

<Target Name="BuildRelease"> 
    <!-- 
     <Obfuscate PathToJasob="C:\Program Files (x86)\Jasob.com\Jasob 3.5" Path="$(GadgetFolder)" Output="$(GadgetName)_obf" log="jasob_log.txt" /> 
    --> 
    <BuildGadget BuildFormat="CAB" Path="$(GadgetFolder)" Target="$(GadgetName).gadget" /> 
    <SignGadget CertName="Cert1" TimestampURL="http://timestamp.comodoca.com/authenticode" Target="$(GadgetName).gadget" /> 
</Target> 

<Target Name="BuildDebug"> 
    <CopyToGadgets GadgetFolder="$(GadgetFolder)" GadgetName="$(GadgetName)" /> 
    <RunGadget GadgetName="$(GadgetName)" /> 
</Target> 
+0

正如我在回覆喬的評論中所說的那樣,我已經嘗試過了。事實上,它首先被設置爲「bin \ Release」的原因是由於我複製了Release配置以試圖使其工作。 – 2010-02-12 17:33:12

+0

謝謝,您對喬的回覆不太清楚。這澄清了它。 – 2010-02-12 17:55:44

+0

我已經用建議更新了我的答案 – 2010-02-12 18:06:57

2

只是一個猜測:

你的調試版本其輸出路徑設置爲bin\Release\。 在bin\Release\文件的時間戳可能造成的MSBuild斷定調試版本已經是最新的。嘗試建立調試更改爲bin\Debug\的輸出路徑。

+0

謝謝,即使只是猜測,我也很欣賞答案。唉,直到我將「發佈」配置複製到「調試」配置才嘗試使其工作,情況並非如此。不過,我仍然會改回它。 – 2010-01-21 15:09:19