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

Pat*_*ick 21 .net c# ilmerge

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

Tit*_*ito 29

好吧,我想出了这个,虽然花了一段时间.

那篇文章已经/ ndebug完全倒退了.

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

2.8 DebugInfo public bool DebugInfo {get; 组; 当此设置为true时,ILMerge为输出程序集创建一个.pdb文件,并将为输入程序集找到的任何.pdb文件合并到该文件中. 如果你想要的输出组件创建.pdb文件,无论此属性设置为false,否则指定在命令行中/ NDEBUG选项.默认值: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>
Run Code Online (Sandbox Code Playgroud)

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