Open chiragknzariya opened 4 years ago
Awaiting for your response @ravibpatel
You can try manually providing targets file this way you can manually add all the assemblies you want to merge. You can do it as shown here.
Thanks for your response @ravibpatel.
I have already used your example targets file and provided manually in project.
Still it complaints for the same.
You can try adding binding redirects as shown in this article. Also, I don't see "Microsoft.Xrm.Sdk.dll" in targets file which should contain the "Microsoft.Xrm.Sdk". If it still doesn't work then embedding may work better than merging in this case. You can try Costura.Fody to embed dll's inside your executable.
I'm able to reproduce this issue using the code in this repo: https://github.com/icnocop/ILRepackBug
Notice the build fails with the following output:
...
1>Target Build:
1>Target ILRepacker:
1> Using "ILRepack" task from assembly "C:\Users\username\.nuget\packages\ilrepack.lib.msbuild.task\2.0.18.2\build\ILRepack.Lib.MSBuild.Task.dll".
1> Task "ILRepack"
1> Added assembly 'bin\Debug\net472\ClassLibrary.dll'
1> Added assembly 'bin\Debug\net472\Microsoft.Practices.EnterpriseLibrary.Common.dll'
1> Added assembly 'bin\Debug\net472\Microsoft.Practices.EnterpriseLibrary.Logging.dll'
1> Merging 3 assembies to 'bin\Debug\net472\\ConsoleApp.dll'
1> E:\github\icnocop\ILRepackBug\ConsoleApp\ILRepack.targets(9,9): error : Failed to resolve assembly: 'Microsoft.Practices.EnterpriseLibrary.Common, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
1> Done executing task "ILRepack" -- FAILED.
1>Done building target "ILRepacker" in project "ConsoleApp.csproj" -- FAILED.
1>
1>Done building project "ConsoleApp.csproj" -- FAILED.
1>
1>Build FAILED.
Any ideas?
Thank you.
+1 ☝️ Experiencing the exact same issue
I had a similar problem trying to merge Newtonsoft.Json.dll
when using a property attribute (removing the attribute allowed the merge). My solution was to add LibraryPath="$(OutputPath)"
to the ILRepack
element in the ILRepack.targets
file
Same issue here.
It will pack the dlls not listed in the InputAssemblies
.
I am now experiencing this issue that was originally stated. I have two items in my ItemGroup
`
`
but i see all 13 .dll files being merged.
It was working before and now all of a sudden im having issues with getting my Microsoft.Xrm.Sdk to work
Error:
Failed to resolve assembly: 'Microsoft.Xrm.Sdk, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
I had this issue and I believe the fix was adding an inputassemblies reference in ILRepack.targets. Please note the expandable ReferencePathWithRefAssemblies inclusion. Just add the file name and exclude the .dll (file type). This fix was taken from https://www.meziantou.net/merging-assemblies-using-ilrepack.htm
<ItemGroup>
<InputAssemblies Include="$(TargetPath)"/>
<InputAssemblies Include="@(ReferencePathWithRefAssemblies)" Condition="'%(filename)' == 'Newtonsoft.Json'" />
<InputAssemblies Include="@(ReferencePathWithRefAssemblies)" Condition="'%(filename)' == 'Microsoft.Xrm.Sdk.Workflow'" />
<InputAssemblies Include="@(ReferencePathWithRefAssemblies)" Condition="'%(filename)' == 'Microsoft.Xrm.Sdk'" />
<InputAssemblies Include="@(ReferencePathWithRefAssemblies)" Condition="'%(filename)' == 'Microsoft.Crm.Sdk.Proxy'" />
<InputAssemblies Include="$(OutputPath)\MyAssembly.dll" />
</ItemGroup>
In my case (.NET Standard 2.0 library) I had to specify LibraryPath
like this:
<?xml version="1.0" encoding="utf-8" ?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="ILRepacker" AfterTargets="Build">
<ItemGroup>
<InputAssemblies Include="$(TargetPath)"/>
<InputAssemblies Include="@(ReferencePathWithRefAssemblies)" Condition="'%(filename)' == 'IndexRange'" />
<LibraryPath Include="%(ReferencePathWithRefAssemblies.RelativeDir)" />
</ItemGroup>
<ILRepack
AllowDuplicateResources="false"
DebugInfo="true"
Internalize="true"
InputAssemblies="@(InputAssemblies)"
LibraryPath="@(LibraryPath)"
OutputFile="$(TargetPath)"
Parallel="true"
TargetKind="SameAsPrimaryAssembly" />
</Target>
</Project>
This way I do not need to have NuGet dependencies to be copied to the output directory.
Had the same issue.
The @DarkDaskin solution of
<LibraryPath Include="%(ReferencePathWithRefAssemblies.RelativeDir)" />
with also LibraryPath="@(LibraryPath)"
in packages/ILRepack.Lib.MSBuild.Task.targets
worked for me.
Hello @ravibpatel
I have created a new C# project and used ILRepack.Lib.MSBuild.Task.2.0.18.1 and added below code in my project .csproj file and it works absolutely fine, but when I add earlybound class file ([assembly: Microsoft.Xrm.Sdk.Client.ProxyTypesAssemblyAttribute()]) to my project It gives below error.
What do you think could be the problem? Can you please share the solution of the problem?
`