Wiem, że ten post był na chwilę z powrotem, ale pomyślałem, że wrzucę moje dwa centy w każdym razie na wypadek, gdyby ktoś natknął się na to.
Ogólną zasadą jest, aby korzystać z wersji PIA w rozwoju, która łączy się z wersją najstarszy Urzędu planuje się wspierać. Tak więc, jeśli zamierzasz obsługiwać pakiet Office 2007 i nowsze, użyj wersji 12 PIA podczas programowania.
Dodać odniesienie do PIAs v12 (albo pobierając PIA w 2007 r. Online, za pośrednictwem VSTO, albo z GAC, jeśli poprzednio już pakiet Office 2007 był poprzednio). Teraz możesz pomyśleć "Ok, odwołuję się do v12 w Visual Studio, to powinno teraz działać w Office 2007". Źle. Ponieważ odnosisz się do wersji v12, ale masz zainstalowany pakiet Office 2010, podczas wiązania zespołu twój komputer powie: "Cóż, wymagany jest v12, ale mamy zainstalowany v14 w GAC, a ponieważ PIA są kompatybilne w przód, użyjemy tego". Nawet jeśli wyraźnie powiesz mu, aby używał wersji v12, po zakończeniu kompilacji twój komputer użyje wersji v14. Możesz to potwierdzić przez FUSLOG. FUSLOG jest doskonałym narzędziem do pracy z bindowaniem zespołów. Uwaga: Jeśli nie widzisz niczego w FUSLOG i uważasz, że powinieneś, wyczyść wszystko w historii przeglądarki Internet Explorer i spróbuj ponownie.
Aby rozwiązać ten problem, należy zatrzymać to, co się nazywa "assembly binding redirection". Te PIA zwykle zawierają plik zasad w GAC. Celem pliku zasad jest przekierowanie starszych wersji PIA do nowszych wersji podczas rozwiązywania złożenia. Aby to zobaczyć, wykonaj następujące czynności:
- Prasowej 'klawisz Windows + R' aby otworzyć menu Run.
- Wpisz "C: \ Windows \ Assembly \ GAC" i naciśnij Enter. Uwaga: Używam komputera 32-bitowego. Twoje PIA będą najprawdopodobniej zainstalowane w innym miejscu w GAC, takim jak "C: \ Windows \ Assembly \ GAC_MSIL".
Po przejściu do GAC przewiń w dół i wyszukaj foldery PIA, do których się odwołujesz (np. Microsoft.Office.Interop.Excel). Jeśli będziesz kontynuować przewijanie, powinieneś zobaczyć foldery zaczynające się od "Zasady", następnie liczbę, a następnie nazwę PIA (np. Policy.12.0.Microsoft.Office.Interop.Excel). Jest to plik strategii wykonujący przekierowanie wiązania. Otwórz plik konfiguracyjny XML w tym folderze, a zobaczysz coś podobnego do poniższego:
<?xml version="1.0" encoding="UTF-16"?><configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity publicKeyToken="71e9bce111e9429c" name="Microsoft.Office.Interop.Excel" culture="neutral"></assemblyIdentity>
<bindingRedirect oldVersion="12.0.0.0" newVersion="14.0.0.0"></bindingRedirect>
</dependentAssembly>
</assemblyBinding>
</runtime>
W powyższym fragmencie kodu tagu „bindingRedirect OldVersion ...” jest odpowiedzialny za Przekierowanie zespołu PIA.Jeśli wykomentuj ten kod tak:
<?xml version="1.0" encoding="UTF-16"?><configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity publicKeyToken="71e9bce111e9429c" name="Microsoft.Office.Interop.Excel" culture="neutral"></assemblyIdentity>
<!--<bindingRedirect oldVersion="11.0.0.0" newVersion="12.0.0.0"></bindingRedirect>-->
</dependentAssembly>
</assemblyBinding>
</runtime>
Wtedy to przekierowanie będą ignorowane. Komentuję go, a następnie usuwam, ponieważ plik służy do dobrego celu, ale nie w przypadku starszych wersji pakietu Office. Wykonaj to na każdym wymaganym pliku zasad PIA, a komputer programistyczny przestanie przekierowywać.
Mam nadzieję, że to odpowiedź na twoje pytanie!
Problem? *Jaki problem? –
Co się stanie, jeśli klikniesz każdy zespół biurowy i włączysz opcję "Osadzić typy interopii"? Myślę, że to odbiera potrzebę zajmowania się tym, gdzie są pliki PIA lub która wersja jest używana. –