我使用单声道的Mono.Cecil能包和我快到时,我所说的问题,从一个自定义的MSBuild任务如下:压倒一切的MSBuild我PDB
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>
我不知道有什么目标的MSBuild调用创建PDB。我推测这是AfterBuild,但事实并非如此。
任何建议都会有所帮助。
通常情况下,编译器会生成PDB。所以CSC的电话会生成它。 – jessehouwing
嗨,是的,我已经在[http://msdn.microsoft.com/en-us/library/ms171479%28v=vs.90%29.aspx](http://msdn.microsoft.com /en-us/library/ms171479%28v=vs.90%29.aspx)。在我看来,它发生在构建目标中。但是,当我将值“DependsOnTargets”更改为Build时,我仍然遇到同样的问题。编辑我正在修改它建成后的DLL。 –
仅供参考,您可能想了解PostSharp如何设置它的构建目标,因为它也可以编织。您也可以打开详细或诊断版本输出以查看pdbs何时被写入/覆盖。 –