有没有办法将pdb文件与ilmerge合并?

时间:2009-09-17 15:53:02

标签: c# .net ilmerge

由于各种原因,我们使用ilmerge将所有应用程序程序集放入一个文件中,因此用户只需处理一个文件。不幸的是,似乎没有办法将.pdb文件与程序集合并。任何人都知道解决这个问题的方法吗?

1 个答案:

答案 0 :(得分:28)

好的,我想出了这个,虽然花了一段时间。

该文章/ ndebug完全倒退。

来自ILMerge附带的发行说明(ILMerge.doc,强调我的):

  

2.8 DebugInfo public bool DebugInfo {get;组; }   当此设置为true时,   ILMerge为。创建.pdb文件   输出组件并将其合并到其中   找到输入程序集的.pdb文件。   如果你想要创建一个.pdb文件   对于输出组件,要么设置   此属性为false或指定   命令中的/ ndebug选项   line。默认值:true命令行   选项:/ 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="&quot;..\..\Libraries\Ilmerge.exe&quot; /copyattrs /allowMultiple /out:&quot;@(MainAssembly)&quot; &quot;@(IntermediateAssembly)&quot; @(IlmergeAssemblies->'&quot;%(FullPath)&quot;', ' ')" />
    <Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
  </Target>

为了完整起见,我使用的是最新版本的ilmerge.exe:版本2.10.219.0,最后修改日期为2010年2月19日上午9:49