I'm using ILMerge to create a single assembly application out of a project that contains 1 exe and 2 resource dll's:

  • \bin\Debug\test.exe
  • \bin\Debug\nl-BE\test.resources.dll
  • \bin\Debug\fr-FR\test.resources.dll

It's a simple test project with 1 form (Form1.cs), so nothing special. My goal is to create a single assembly app with a working resource manager (I have read ILMerge and localized resource assemblies and Single-assembly multi-language Windows Forms deployment (ILMerge and satellite assemblies / localization) - possible? for info on how to do this).

After compiling the project, I run ILMerge with the following command-line parameters:

ilmerge /log:test.txt /target:winexe /copyattrs /allowdup /out:test_merged.exe 
"C:\projectdir\bin\Debug\test.exe" "C:\projectdir\bin\Debug\fr-FR\test.resources.dll" 
"C:\projectdir\bin\Debug\nl-BE\test.resources.dll"

If I check the contents of the merged assembly with Reflector, I see the following under the resource tree node:

  • test.Form1.fr-FR.resources
  • test.Form1.fr-FR.resources
  • test.Form1.resources
  • test.Properties.Resources.resources

Instead of the fr-FR and nl-BE resources I have 2 times the fr-FR resources. Is this because the resource dll's have the same names ? The result is that I can only get the fr-FR resources at runtime.

Any ideas ?

Update (log file contents): (Note: Binaries are prefixed with "loc_", I left them out in my previous posting for clarity)

ILMerge version 2.10.526.0
Copyright (C) Microsoft Corporation 2004-2006. All rights reserved.
ILMerge /log:loc_test.txt /target:winexe /copyattrs /allowdup 
Edit
Report