好吧,我想出来了,虽然花了一段时间。
那篇文章的错误完全是向后的。
从ILmerge随附的发行说明(ilmerge.doc,emphasis mine)中:
2.8 debuginfo公共bool debuginfo get;set;
当设置为真时,
ilmerge为创建.pdb文件
输出程序集并合并到其中
找到输入程序集的.pdb文件。
如果你这样做了
不
希望创建.pdb文件
对于输出程序集,可以是
此属性为false或指定
命令中的/ndebug选项
线。
默认值:真命令行
选项:/NDebug
解决方案是
不
在命令行上有那个标志。默认情况下,ilmerge将合并pdb文件。确保源程序集的所有PDB文件都位于同一目录中,并与其关联的DLL一起,以便ilmerge可以找到它们。(我们正在使用项目引用,并有一个ILMERGE项目,它负责处理此需求。)
这是我的ilmerge csproj文件中的相关部分。
<Target Name="AfterBuild">
<CreateItem Include="@(ReferencePath)" Condition="'%(CopyLocal)'=='true'">
<Output TaskParameter="Include" ItemName="IlmergeAssemblies" />
</CreateItem>
<Exec Command=""..\..\Libraries\Ilmerge.exe" /copyattrs /allowMultiple /out:"@(MainAssembly)" "@(IntermediateAssembly)" @(IlmergeAssemblies->'"%(FullPath)"', ' ')" />
<Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
</Target>
为了完整起见,我使用了最新版本的ilmerge.exe:2.10.219.0,最后修改日期为2010年2月19日上午9:49