2

Windowsデスクトップガジェットを開発、デバッグ、および展開するための環境をセットアップしようとしています。プロジェクトで少し障害が発生しました。構成が「デバッグ」に設定されていると、ガジェットでビルドを実行できません。構成が「リリース」に設定されている場合、ビルドは次のカスタムタスクを実行します。

  1. ガジェットの内容を別のフォルダにコピーします。
  2. javascriptファイルを縮小/難読化し、コメントと空白を削除します。
  3. ファイルをCABファイルにパッケージ化します。
  4. デジタル証明書を使用してCABファイルに署名します。

これは問題なく実行されます。私の「デバッグ」構成には次のタスクが定義されています

  1. ガジェットフォルダをにコピーしますAppData\Local\Microsoft\Windows Sidebar\Gadgets\
  2. IDesktopGadgetインターフェイスを使用してガジェットを起動します。

これらの2つのタスクを「リリース」構成にコピーすると、問題なく実行されます。問題はありません。「リリース」構成からコピーした「テスト」と呼ばれる別の構成を作成してみました。

「リリース」以外の構成をビルドしようとすると、「ビルドに成功しました」というインスタントメッセージが表示されますが、タスクはまったく実行されていません。

編集:私はまだVS 2010 RCで同じ問題を抱えていて、それが非常にイライラしているので、賞金を始めました。

さらに編集:
ジョンのおかげで、ビルドプロセスをデバッグすることができました。<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">にもかかわらず、2番目の要素が最初の要素をオーバーライドしているように見えます。Condition私に何ができる?

4

2 に答える 2

2

ただの推測:

デバッグビルドの出力パスはに設定されていbin\Release\ます。のファイルのタイムスタンプがbin\Release\原因で、MSBuildはデバッグビルドがすでに最新であると結論付けている可能性があります。bin\Debug\デバッグビルドの出力パスをに変更してみてください。

于 2010-01-21T14:48:13.733 に答える
2

ジョーが示唆するように:

このように出力パスを変更し、問題が解決するかどうかを確認します。

<OutputPath>bin\Debug\</OutputPath>

アップデート

走ってみましたmsbuild /verbosity:diagnosticか?

それを試して出力を表示できますか?

2回目の更新

1つのターゲットを「ビルド」してから、そのターゲットで2つのタスクを作成します。

<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>
于 2010-02-12T16:59:02.493 に答える