Zauważyłem tę sekcję w moje pliki web.config na chwilę, a ja teraz stara się rozumieć, co dokładnie celem jest:Jakie jest znaczenie/przyczyna wygenerowanych wpisów w pliku web.config> configuration> runtime> assemblyBinding?
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Tak, pierwsza pozycja zdaje się mówić:
System.Web.Helpers to nazwa zależnego zestawu z publicznym znacznikiem klucza z
31bf3856ad364e35
. Przekieruj wersję 1.0.0.0 do od 2.0.0.0 do wersji 2.0.0.0.
Moje najlepsze przypuszczenie jest takie, że oznacza to, że każdy kod wykonywany w kontekście czasu działania ASP.NET, który zależy od zestawu o określonej nazwie, który ma również wersję w podanym zakresie, jest wykonywany tak, jakby został skompilowany z określoną wersją z określonym kluczem publicznym.
Czy to oznacza, że mam projekt WWW, który zależy od biblioteki klas i że biblioteka klas odwołuje się do starszej wersji zestawu, która ma wartość bindingRedirect, że kod zostanie wykonany tak, jakby był skompilowany nowsza wersja?
dzięki, to informacje, które miałem nadzieję uzyskać. czy czujesz, że rozumiesz to do tego stopnia, że twoja odpowiedź jest autorytatywna? (proszę nie brać tego w niewłaściwy sposób) –
@AaronAnodide: nie, nie sądzę, że moja odpowiedź jest autorytatywna. Tak po prostu rozumiem dokumentację i użyłem jej 3 razy. Nie martw się, nie biorę tego źle ;-) – jbl
Tak, macie rację, użyłem tego do tego samego celu; na przykład mówię, że mam bibliotekę o nazwie libA.dll i inną bibliotekę o nazwie libB.dll. Moja wersja libA.dll jest kompilowana przeciwko wersji 1.0 biblioteki libB.dll. Zaktualizowałem moją aplikację do nowszej wersji libB.dll (powiedzmy 1.5), a libA.dll już nie działa. Chciałbym użyć tej funkcji, by polecić środowisku wykonawczemu, aby libA.dll działało z nowszą wersją libB.dll (drugą, prawdopodobnie lepszą opcją jest, jeśli posiadam kod źródłowy libA.dll do kompilacji go z nowszą wersją libB.dll). –