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

最佳答案

好的,尽管花了一段时间,我还是想出了这个。

该文章的/ndebug正好向后。

从ILMerge附带的发行说明(ILMerge.doc,重点是我的)中:



该解决方案专门用于而不是在命令行上具有该标志。默认情况下,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

关于c# - 有没有办法用ilmerge合并pdb文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1439721/

10-10 19:55