Ich habe eine Console-App C# -Projekt, das auf NHibernate 3.3.2 und ShapArch.NHibernate 2.0.4.628, die mit NHibernate 3.3.1 kompiliert wurde (Soweit ich weiß - ich könnte mich irren, aber als ich ein SharpArch-Projekt 2.0.4 erstellt habe, habe ich NH 3.3.1 über Nuget heruntergeladen).DLL-Versionen im Visual Studio angezeigt. Net nicht die referenzierte DLL-Datei/Produktversionen
Warum zeigt Visual Studio NHibernate als Version 3.3.1.4000, wenn die referenzierte DLL 3.3.2.4000 ist? Die Eigenschaft Spezifische Version wird für alle Verweise auf false gesetzt. Und die Version für SharpArch erscheint in VS 2.0.0.0 statt 2.0.4, die die Datei/Produkt-Version ist.
In der App Config ich habe:
<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>
Die App mit nicht geladen werden kann:
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
Ich bin nicht einmal sicher, warum es versucht 3.3.0.4000 zu laden, wenn scharfe Architektur gewesen kompiliert mit 3.3.1.
Ein Wunsch jemand würde eine VS-Erweiterung erstellen, um die Dateiversion in der Liste der Eigenschaften anzuzeigen. –
Für den Moment werde ich immer den .net Reflektor verwenden, der mir immer die Version sowie die Versionen der DLLs zeigt, von denen die DLL abhängt – costa