1

I got "Referenced assembly 'xxxxxxxxxx.GPUImage' does not have a strong name error" and according to How to fix "Referenced assembly does not have a strong name" error, I have corrected the issue. I have added the correct referencing also. (I have this problem with two other third-party assemblies and after signing them they work properly.)

But after I sign, it gives a new error which was not been given earlier. It is as follows.

Error    2    The type 'xxxxxxxxxx.GPUImage.ImageFilter' is defined in an assembly
that is not referenced. You must add a reference to assembly 'xxxxxxxxxx.GPUImage',
Version=2.0.0.0, Culture=neutral, 'PublicKeyToken=null'.

What is the reason for this? Can a .dll consist with an unassigned .dll inside the signed one?

As mentioned by @eric, I run fusion log and the following is the log file.

Enter image description here

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
DevT
  • 4,843
  • 16
  • 59
  • 92

3 Answers3

2

Search for all occurrences of the unsigned assembly on your hard disk, and delete them - keep just the signed version. Then do a complete rebuild. It'll either work, or you'll find who's referencing the old assembly.

zmbq
  • 38,013
  • 14
  • 101
  • 171
  • is there any way find those old assembly referencing? – DevT Jun 07 '12 at 05:50
  • Oh, right. Just look for all the files with the that name, and delete all of them except the one you're *sure* is signed. – zmbq Jun 07 '12 at 05:51
2

Learn and use Process Monitor, and then you can see from where your process tries to load the assemblies,

http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

After knowing all the locations, go ahead and remove those unsigned versions. Usually they might be cached somewhere by your unit testing suite or something else. By deleting them, you should be able to resolve the problem.

Lex Li
  • 60,503
  • 9
  • 116
  • 147
1

Some assembly in your solution is still referencing an unsigned version of the assembly that defines GPUImage.ImageFilter. You get that from PublicKeyToken=null.

Try looking at how loading is resolving using the Fusion Log Viewer. It should tell you which assembly is trying to reference the unsigned one.

Eric J.
  • 147,927
  • 63
  • 340
  • 553