c# - wixtoolset - WIXカスタムアクションのデバッグが機能しない
wixedit wix toolset (3)
あなたの最後に何が問題なのかはっきりしていませんが、サンプルのカスタムアクションとそれをデバッグする方法の記事があります。 次の記事で説明するように動作するはずです。http : //www.advancedinstaller.com/user-guide/qa-c-sharp-ca.html
私はカスタムアクションをデバッグしようとしました。 私はDebugger.Break()をカスタムアクションcsに入れました。 カスタムアクションを作成すると、次のファイルが作成されます。
myCustomAction.dll
myCustomAction.CA.dll
myCustomAction.pdb
wixプロジェクトでは、myCustomAction.CA.dllをバイナリタグ(myCustomAction.dllではなく)内で参照しています。 myCustomAction.CA.pdbが存在しないので、デバッグが機能しないのはなぜですか? 私はメッセージボックスを表示したときに、メッセージボックスも試してみて、プロセスにアタッチしました。 しかし、次のメッセージが表示されます。PDBファイルを見つけたり開くことができません。
私は間違っているの? 私はWix 3.5バージョンとVisual Studio 2010を持っています。
ここに私を助けた記事があります。
カスタムアクションの最初の行に次のコードを追加するだけです。
System.Diagnostics.Debugger.Launch();
次に、インストーラを実行します。 あなたのアクションの実行を開始すると、ポップアップウィンドウが表示され、デバッグ用のビジュアルスタジオを起動する提案が表示されます。
参照ライブラリが正しく、* .CA.dllである必要があります。 また、MessageBoxのアプローチも機能しますが、rundll32プロセスにアタッチする必要があります。
これは、
System.Diagnostics.Debugger.Launch();
VMのようなリモートシステムでのデバッグを改善する方法です。 私は.CA.dllをパッケージ化するために使用されたwixターゲットファイルにいくつかの変更を加えました。
最初のCreate Itemの条件では、%(ReferenceCopyLocalPaths.extension) '==' .pdb 'のチェックを追加しました。ほとんどの依存関係.pdbが今では私の.CA.dllに含まれています。リモートシステム。
C:\ Program Files(x86)\ MSBuild \ Microsoft \ WiX \ v3.x \ wix.ca.targets
<Target Name="PackCustomAction"
Inputs="@(IntermediateAssembly);@(Content);$(CustomActionContents)"
Outputs="$(IntermediateOutputPath)$(TargetCAFileName)">
<!-- Find all referenced items marked CopyLocal, but exclude non-binary files. -->
<CreateItem
Include="@(ReferenceCopyLocalPaths)"
Condition=" '%(ReferenceCopyLocalPaths.extension)' == '.pdb' or '%(ReferenceCopyLocalPaths.extension)' == '.dll' or '%(ReferenceCopyLocalPaths.extension)' == '.exe'">
<Output TaskParameter="Include" ItemName="CustomActionReferenceContents"/>
</CreateItem>