I am building a .Net solution using MSBuild v3.5 targeting .Net 2.0.
We are upgrading to use Crystal 11.5 so I have updated the binaries in our source control tree to contain the 11.5 version DLLs instead of the 10.0 DLLs.
In the project I reference some Crystal Reports DLLs. Here is a small example of the project file:
<Reference Include="CrystalDecisions.ReportAppServer.ClientDoc, Version=10.0.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\Third Party\CrystalReports\CrystalDecisions.ReportAppServer.ClientDoc.dll</HintPath>
</Reference>
<Reference Include="CrystalDecisions.ReportAppServer.CommonControls, Version=10.0.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\Third Party\CrystalReports\CrystalDecisions.ReportAppServer.CommonControls.dll</HintPath>
</Reference>
But, when I look at the manifest it shows that ClientDoc is referenced twice even though it isn't in the project twice:
.assembly extern CrystalDecisions.ReportAppServer.ClientDoc { .publickeytoken = (69 2F BE A5 52 1E 13 04 ) // i/..R... .ver 11:5:3300:0 } .assembly extern CrystalDecisions.ReportAppServer.ClientDoc as CrystalDecisions.ReportAppServer.ClientDoc_20 { .publickeytoken = (69 2F BE A5 52 1E 13 04 ) // i/..R... .ver 10:0:3300:0 }
I've tried to modify the reference in the project to specify version 11.5.3300.0 and also set SpecificVersion to True. Neither of those help, I still get a manifest that references both versions.
Why are both versions being included in the Manifest? Why is this only happening with the ClientDoc.DLL when all the other DLLs are specified the same way with the same hint path?
Also, if it is shipped this way, which version will fusion try to use first? It seems that on one machine we tested we can an error that version 10.0.3000.0 was not found... 11.5 was on the machine. Where on another machine it seemed to work fine.