Ho un progetto di app C# della console che dipende da NHibernate 3.3.2 e ShapArch.NHibernate 2.0.4.628 che è stato compilato con NHibernate 3.3.1 (per quanto ne so - potrei sbagliarmi, ma quando ho creato un progetto SharpArch 2.0.4 ho scaricato NH 3.3.1 via Nuget).versioni dll visualizzate in Visual Studio. Net che non riflette il file dll referenziato/versioni del prodotto
Perché Visual Studio mostra NHibernate come versione 3.3.1.4000 quando la dll di riferimento è 3.3.2.4000? La proprietà Versione specifica è impostata su false per tutti i riferimenti. E la versione per SharpArch appare in VS 2.0.0.0 anziché 2.0.4 che è la versione del file/prodotto.
Nel config app che ho:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.3.1.4000" newVersion="3.3.2.4000" />
</dependentAssembly>
</assemblyBinding>
</runtime>
L'applicazione non riesce a caricare con:
System.IO.FileLoadException was unhandled
Message=Could not load file or assembly 'NHibernate, Version=3.3.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Source=MyApp.ResourcesGenerator
FileName=NHibernate, Version=3.3.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
FusionLog=""
StackTrace:
at MyApp.ResourcesGenerator.Program.InitializeNHibernateSession()
at SharpArch.NHibernate.NHibernateInitializer.InitializeNHibernateOnce(Action initMethod) in d:\Builds\SharpArch2\Solutions\SharpArch.NHibernate\NHibernateInitializer.cs:line 54
at MyApp.ResourcesGenerator.Program.Initialize() in C:\projects\tc\Trunk\Source_LibsUpgrade\Applications\PerformanceManagement\MyApp.ResourcesGenerator\Program.cs:line 149
at MyApp.ResourcesGenerator.Program.Main(String[] args) in C:\projects\tc\Trunk\Source_LibsUpgrade\Applications\PerformanceManagement\MyApp.ResourcesGenerator\Program.cs:line 31
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException: System.IO.FileLoadException
Message=Could not load file or assembly 'NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
FileName=NHibernate, Version=3.3.0.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4
io non sono nemmeno sicuro perché si sta cercando di caricare 3.3.0.4000 in cui l'architettura è stata tagliente compilato con 3.3.1.
Un desiderio qualcuno potrebbe creare un'estensione VS per mostrare la versione del file nell'elenco delle proprietà. –
Per ora userò sempre il reflector .net che mi mostra sempre la versione e le versioni delle DLL che la dll dipende – costa