1

mono の Mono.Cecil パッケージを使用していますが、カスタム msbuild タスクから次のコマンドを呼び出すと問題が発生します。

ModuleDefinition.Write(AssemblyFileName, new WriterParameters { WriteSymbols = true });

アセンブリは正常に保存され、必要なことを正確に実行します。アセンブリ ファイル名を変更して、pdb が作成されているかどうかをテストすると、作成され、他の pdb に置き換えると、正しくデバッグされます。ただし、正常にビルドすると、アセンブリの pdb は古い pdb のままです。mono が pdb を作成しており、msbuild がそれを古いもので上書きしていると思います。

これは、プロジェクトにインポートしようとしているターゲットです:

<PropertyGroup>
    <TaskAssemblyFileDir>$(SolutionDir)PropertyObserver.Tasks\$(OutDir)</TaskAssemblyFileDir>
    <TaskAssemblyFileUnescapeDir>$([MSBuild]::Unescape('$(TaskAssemblyFileDir)'))</TaskAssemblyFileUnescapeDir>
    <TaskAssemblyFile>$(TaskAssemblyFileUnescapeDir)PropertyObserver.Tasks.dll</TaskAssemblyFile>
</PropertyGroup>
<UsingTask TaskName="PropertyObserverTask" AssemblyFile="$(TaskAssemblyFile)" />
<Target Name="PropertyObserver" DependsOnTargets="AfterBuild">
    <PropertyObserverTask AssemblyPath="$(TargetPath)" />
</Target>

pdbを作成するためのmsbuild呼び出しのターゲットが何であるかわかりません。AfterBuild だと思いましたが、そうではありません。

どんなアドバイスも役に立ちます。

4

1 に答える 1