2011-07-27 18 views
7

Mam projekt WPF 4 do interakcji z dokumentami Word wykonanymi w VS2010 i formularzem User Control z formularzem wygranej do obsługi aplikacji Word do niego. I inne com. Wszystkie comll są przekazywane do mojej głównej aplikacji wpf. Chcę opublikować mój projekt, aby zainstalować go na innym komputerze i wykonać dla niego automatyczną aktualizację. Otrzymałem komunikat: "Nie udało się wygenerować zestawu - odwołanie do zestawu" Interop.Office "nie ma silnej nazwy.". błąd dla każdej dll COM. Dll odnoszą się do (Interop.word.dll, interop.office.dll, interop.VBIDE.dll) i wszystkie te biblioteki DLL są również odwoływać się i używane w moim kodzie wpf.Generowanie zestawów nie powiodło się - zestaw referencyjny "Interop.Office" nie ma silnej nazwy

Znalazłem link Strong Signed Assemblies ma to samo pytanie, ale nie rozwiązuje problemu.

+0

Wystarczy usunąć odniesienia i dodać je z powrotem. –

Odpowiedz

17

Spędziłem chwilę trałowania w Internecie do tego, uważam, że odpowiedź, której potrzebujesz może być tutaj, dla większości 3rd party DLL.

"Adding Strong Name to Interop DLL"

W artykule opisano trzy sposoby dodawania silną nazwę z trzecim zespołem partii. Polecenia są:
1. Dodanie silnej nazwy poprzez parę kluczy

> SN -k MyKeyPair.snk 
> ILDASM ASQLService.dll /out:ASQLService.il 
> ILASM ASQLService.il /dll /resource=ASQLService.res /key=MyKeyPair.snk 

2. Dodanie silnej nazwy poprzez certyfikat w magazynie certyfikatów

> ILDASM ASQLService.dll /out:ASQLService.il 
> MAKECERT -ss MyCertificateStore -sk MyKeyContainer 
> ILASM ASQLService.il /dll /resource=ASQLService.res /[email protected] 

3. Dodanie silną nazwę za pośrednictwem Certyfikat w Informacji osobowych Exchange (.pfx) Plik

> MAKECERT -r -pe -sv MyCertificate.pvk MyCertificate.cer 
> PVK2PFX -pvk MyCertificate.pvk -pi qwerty -spc MyCertificate.cer -pfx MyCertificate.pfx 
> SN -p MyCertificate.pfx MyCertificate-publickey.snk 
> ILASM ASQLService.il /dll /resource=ASQLService.res /key=MyCertificate-publickey.snk 
> SN -R ASQLService.dll MyCertificate.pfx 

Nadzieję, że pomogło

+0

Trochę niechlujny, ale działa idealnie. Dzięki. – Nyerguds

+0

Ten artykuł jest niesamowity. – Pluto

5

trzeba mieć .snk

prawym przyciskiem myszy na projekcie -> Właściwości i przejdź na kartę Podpisanie -> Sprawdź Zapisz zespół -> wybierz nowy klucz

Nadzieja pomaga

+7

W rzeczywistości problem z "silną nazwą" zaczyna się tylko wtedy, gdy zdecydujesz się podpisać swój zespół, ponieważ wtedy wszystkie referencyjne biblioteki dll będą również podpisywane pod silną nazwą. – Nyerguds

+0

Dokładnie, podpisany kod nie może wywołać niepodpisanego kodu ./ –

7

ten komentarz powinien być odpowiedzią:

Actually, the "strong name" problem only STARTS if you decide to sign your assembly, since then it'll require all referenced dlls to be strong-name signed too

Jeśli nie chcesz podpisać zespołu i chcesz przezwyciężyć ten błąd kompilacji. Wybierz NIE, aby podpisać zespół, który próbujesz zbudować. Następnie wszystkie odniesienia do projektów również nie wymagają podpisu.