1

是否可以合并不是全部,而只是一些参考 dll 与ILMerge? 我有两个参考 -ZxsignDirectShowLib. 我ILMerge只是做了DirectShowLib

"C:\Program Files (x86)\Microsoft\ILMerge\ILMerge.exe" SnapShot.exe DirectShowLib.dll /out:aa.exe

文件zxing.dllzxing.presentation.dll放置在aa.exe. 调用 zxing 包时出现异常:

See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

    ************** Exception Text **************
    System.Exception: Timeout waiting to get picture
       at SnapShot.Capture.Click()
       at SnapShot.Form1.button1_Click(Object sender, EventArgs e)
       at System.Windows.Forms.Control.OnClick(EventArgs e)
       at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
       at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
       at System.Windows.Forms.Control.WndProc(Message& m)
       at System.Windows.Forms.ButtonBase.WndProc(Message& m)
       at System.Windows.Forms.Button.WndProc(Message& m)
       at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
       at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    ************** Loaded Assemblies **************
    mscorlib
        Assembly Version: 2.0.0.0
        Win32 Version: 2.0.50727.8936 (WinRelRS4.050727-8900)
        CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
    ----------------------------------------
    aa
        Assembly Version: 1.0.6890.24360
        Win32 Version: 1.0.6890.24360
        CodeBase: file:///D:/C%23nonsens/DirectShowSamples-2010-February/Samples/Capture/DxSnap/bin/Release/New%20folder/aa.exe
    ----------------------------------------
    System.Windows.Forms
        Assembly Version: 2.0.0.0
        Win32 Version: 2.0.50727.8922 (WinRelRS4.050727-8900)
        CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System
        Assembly Version: 2.0.0.0
        Win32 Version: 2.0.50727.8934 (WinRelRS4.050727-8900)
        CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Drawing
        Assembly Version: 2.0.0.0
        Win32 Version: 2.0.50727.8922 (WinRelRS4.050727-8900)
        CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------

    ************** JIT Debugging **************
    To enable just-in-time (JIT) debugging, the .config file for this
    application or computer (machine.config) must have the
    jitDebugging value set in the system.windows.forms section.
    The application must also be compiled with debugging
    enabled.

    For example:

    <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>

    When JIT debugging is enabled, any unhandled exception
    will be sent to the JIT debugger registered on the computer
    rather than be handled by this dialog box.

是否有可能以某种方式进行管理ILMerge以避免出现此类错误?

4

1 回答 1

0

这可以通过以下 nuget Install-package ILMerge.MSBuild.Tasks

.csproj介于两者之间的目标示例<Project> </Project>

<Target Name="AfterBuild">
  <ItemGroup>
    <MergeAsm Include="$(OutputPath)$(AssemblyName).dll" />
    <MergeAsm Include="$(OutputPath)2nd.dll" />
    <MergeAsm Include="$(OutputPath)3th.dll" />
  </ItemGroup>
  <PropertyGroup>
    <MergedAssembly>$(ProjectDir)$(OutDir)$(AssemblyName).dll</MergedAssembly>
  </PropertyGroup>
  <Message Text="ILMerge @(MergeAsm) -&gt; $(MergedAssembly)" Importance="high" />
  <ILMerge InputAssemblies="@(MergeAsm)" OutputFile="$(MergedAssembly)" TargetKind="SameAsPrimaryAssembly" />
</Target>

MergeAsm 您可以定义您想要合并到主的每个 dll,如示例 2nd.dll 和 3th.dll 中所示

于 2018-11-12T13:20:18.980 回答