我正在使用单声道的 Mono.Cecil 包,当我从自定义 msbuild 任务调用以下命令时遇到了问题:
ModuleDefinition.Write(AssemblyFileName, new WriterParameters { WriteSymbols = true });
该程序集保存得很好,并且完全符合我的需要。如果我更改了程序集文件名以测试是否创建了 pdb,它是并且当替换为另一个 pdb 时,它正在正确调试。但是,当我正常构建时,程序集的 pdb 仍然是旧的 pdb。我认为 mono 正在创建 pdb,而 msbuild 正在用旧的 pdb 覆盖它。
这是我试图导入项目的目标:
<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,但事实并非如此。
任何意见将是有益的。