2009-11-17 14 views
9

Mam bibliotekę klas o nazwie "MyAssembly" wewnętrznie odwołującą się do a.dll, b.dll wersji 3.1.1.0; Mam zbudować projekt, który wyprowadzono MyAssembly.dll. W innym systemie (ramce) utworzyłem projekt aplikacji WWW i odwołałem się do MyAssembly.dll. nowy system ma nowe wersje a.dll i b.dll 4.0.0; Użyłem wiążącego przekierowania w web.config jak poniżej. Nadal nie można skompilować aplikacji internetowej. jest napisane brakujące odniesienie do zespołu a.dll, wersja 3.1.1.0.Wiążący problem przekierowania w .net

Czy jakaś jednostka może pomóc w rozwiązaniu tego problemu?

Dzięki, Suresh

Odpowiedz

6

To powinno działać.

<runtime> 
<dependentAssembly> 
    <assemblyIdentity name="MyAssembly" publicKeyToken="12233444"/> 
    <bindingRedirect oldVersion="3.1.1.0" newVersion="4.0.0.0"/> 
</dependentAssembly> 
</runtime> 

Kolejna propozycja: Zdjąć nazw tagu konfiguracyjnym:

Zamiast

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> 

spróbować

<configuration> 
+0

Zrobiłem dokładnie to samo. Ale bez powodzenia. Podczas kompilowania projektu w samej ideie, dając błąd mówiąc: "brakuje odpowiedzi na temat assembly a.dll 3.1.1.0 – Suresh

+1

Znacznik konfiguracyjny nie zawiera atrybutu xmlns." No Luck – Suresh

+0

To działało po mojej stronie, dzięki. Moje pytanie brzmi: dlaczego działa, gdy Atrybut xmlns został usunięty? – csg

0

Używasz MyAssembly w aplikacji internetowej. W tym zespole zostanie użyte przekierowanie wiązania, a nie zespoły używane przez MyAssembly. Sprawdź manifest pliku MyAssembly.dll, powinien odnosić się do wersji 3.1.1.0 pliku a.dll, dlatego wyświetlany jest błąd kompilatora. Zbuduj MyAssembly odwołując się do a.dll wersji 4.0.0.0, a następnie użyj MyAssembly w swojej aplikacji internetowej. To zadziała.

0

Spróbuj w ten sposób:

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="a.dll" 
         publicKeyToken="{put a.dll publicKeytoken here}" 
         culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-99.99.99.99" 
        newVersion="4.0.0.0"/> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="b.dll" 
         publicKeyToken="{put b.dll publicKeytoken here}" 
         culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-99.99.99.99" 
        newVersion="4.0.0.0"/> 
    </dependentAssembly> 
</assemblyBinding> 

również udać się do odniesień do danej aplikacji, kliknij prawym przyciskiem a.dll i b.dll, przejdź do właściwości i sprawdź, czy „konkretnej wersji” jest ustawiona na False .

Mam nadzieję, że to pomaga.

19

To całkowicie sprawdziło się dla mnie. UWAGA: Potrzebujesz NO przestrzeń nazw na znaczniku configuration. A ty MUSISZ mieć przestrzeń nazw na swoim tagu assemblyBinding.

<assemblyBinding> Element for <runtime>

<!-- important: no namespace --> 
<configuration> 
    <runtime> 
    <!-- important, must have this namespace --> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="Strongly.Named.Assembly" publicKeyToken="xxx" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

Czy oba te albo nie będzie go odczytać. Jeśli daje błąd, że nie może załadować niczego oprócz 2.0.0.0 w tym przykładzie, to nie podnosi poprawnie elementów konfiguracyjnych.

Działa to również tylko w przypadku mocno nazwanych złożeń.Aby dowiedzieć się, czy coś jest zdecydowanie o nazwie uruchom następującą komendę w oknie komend VC

open (menu Start> Wszystkie programy> Visual Studio> wizualne narzędzia studyjne> wiersz polecenia visual studio)

Następnie uruchom:

sn -vf "path-to-assembly.dll" 

Jeśli zwraca, że ​​jest ważna, to jest silnie nazywane.

źródło: http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/

+0

To całkowicie naprawiony problem, który miałem z wiążącym przekierowaniem ignorowanym dla projektu internetowego – Jaans

+0

KOCHAM CIĘ, Całkowicie uratowałeś moje zdrowie psychiczne, usunąłem przestrzeń nazw ze znacznika 'configuration' i po prostu zadziałało! –

+0

Wielkie dzięki! Brakuje przestrzeni nazw w złożeniu –

Powiązane problemy