MSBuild“调试”配置在VS 2010 Beta 2中不起作用

时间:2010-01-21 14:32:08

标签: visual-studio-2010 msbuild windows-desktop-gadgets

我正在尝试设置我的环境来开发,调试和部署Windows桌面小工具。我在项目中遇到了一些障碍,当配置设置为“Debug”时,我无法在我的小工具上运行构建。如果配置设置为“Release”,则构建将执行以下自定义任务:

  1. 将小工具内容复制到单独的文件夹。
  2. 缩小/混淆javascript文件,删除注释和空格。
  3. 将文件打包成CAB文件。
  4. 使用数字证书对CAB文件进行签名。
  5. 运行得很好,我的“Debug”配置定义了以下任务

    1. 将小工具文件夹复制到AppData\Local\Microsoft\Windows Sidebar\Gadgets\
    2. 使用IDesktopGadget界面启动小工具。
    3. 如果我将这两个任务复制到“Release”配置中,它们运行得很好 - 没有任何问题。我已经尝试创建一个名为“Test”的单独配置,从“Release”配置中复制。

      如果我尝试构建除“Release”之外的任何配置,我会收到一条即时消息,说“构建成功”,但根本没有运行任务。

      编辑:我已经开始获得赏金,因为我对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属性。我该怎么办?

2 个答案:

答案 0 :(得分:2)

只是一个猜测:

您的Debug版本的输出路径设置为bin\Release\bin\Release\中文件的时间戳可能导致MSBuild断定调试版本已经是最新版本。尝试将输出路径更改为bin\Debug\以进行调试构建。

答案 1 :(得分:2)

乔建议:

像这样更改输出路径,看看是否能解决问题:

<OutputPath>bin\Debug\</OutputPath>

<强>更新

您是否尝试过msbuild /verbosity:diagnostic

你可以尝试并显示输出吗?

第二次更新

制作一个目标'build',然后在该目标中创建两个任务:

<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>