ravibpatel / ILRepack.Lib.MSBuild.Task

MSBuild task for ILRepack which is an open-source alternative to ILMerge.
Other
107 stars 30 forks source link

Does not work as described in readme #53

Open Jdbye opened 3 months ago

Jdbye commented 3 months ago

You cannot simply install the NuGet package and it will automatically merge all of the dependencies. it does nothing unless you create an ILRepack.targets file, which (as far as I can tell) requires manually defining the path of each dependency to merge. It would be nice if it worked automatically, like the readme says, or at least was able to automatically detect the dependencies to merge, since it's easy to forget adding a newly added dependency to the targets file.

ravibpatel commented 3 months ago

The default targets file that is supplied with NuGet package should work with Release configuration. Can you tell me which .NET Framework version are you using, so I can try to reproduce it?

Jdbye commented 2 months ago

That may be my mistake as I assumed it would apply to both debug and release and I'm not sure if I actually tested the release build. I am using a custom targets file with the debug symbols enabled, but is it possible to use a custom targets file without manually specifying the input assemblies?

ravibpatel commented 2 months ago

You can do just like I did it in default targets file. It will include the executable itself and all the DLL files in the output directory.

<Target Name="ILRepack" AfterTargets="Build">
    <ItemGroup>
        <InputAssemblies Include="$(OutputPath)$(TargetName)$(TargetExt)"/>
        <InputAssemblies Include="$(OutputPath)*.dll" Exclude="$(OutputPath)$(TargetName)$(TargetExt)"/>
    </ItemGroup>

    <ILRepack
        Parallel="true"
        DebugInfo="true"
        AllowDuplicateResources="false"
        InputAssemblies="@(InputAssemblies)"
        TargetKind="SameAsPrimaryAssembly"
        KeyFile="$(KeyFile)"
        OutputFile="$(OutputPath)$(TargetName)$(TargetExt)"
    />
</Target>