MSBuild nie może podpisać manifestu ClickOnce przy użyciu klucza tymczasowego (błędy MSB3326 i MSB3321)

Próbuję zbudować ClickOnceFormularze Windows projekt (.NET 3.5 / Visual Studio 2010) na komputerze z systemem Windows Server.(W celu zautomatyzowania procesu kompilacji za pomocąHudson CI.)

Do podpisania manifestu ClickOnce utworzyłem tymczasowy klucz w Visual Studio,temp.pfx. Mogę z powodzeniem zbudować i wdrożyć projekt z Visual Studio na mojej stacji roboczej. Ale podczas bieganiaMSBuild na serwerze otrzymuję następujące komunikaty o błędach:

C: Windows Microsoft.NET Framework64 4.0.30319 Microsoft.Common.targets (1970,9): błąd MSB3326: Nie można zaimportować następującego pliku klucza:. Plik klucza może być chroniony hasłem. Aby to naprawić, spróbuj ponownie zaimportować certyfikat lub ręcznie zaimportuj certyfikat do osobistego magazynu certyfikatów bieżącego użytkownika. [C: .hudson praca [...]. Csproj]

C: Windows Microsoft.NET Framework64 4.0.30319 Microsoft.Common.targets (1970,9): błąd MSB3321: Importowanie pliku klucza „temp.pfx” ​​zostało anulowane. [C: .hudson praca [...]. Csproj]

Spróbowałem wszystkich poniższych pytań i odpowiedzi bez szczęścia:

Pytanie o przepełnienie stosuNie można zaimportować pliku klucza „blah.pfx” ​​- błąd „Plik klucza może być chroniony hasłem”

=> W moim przypadku komunikat o błędzie nie wskazuje nazwy bazy certyfikatów, ale zamiast tego mówi „bieżący magazyn osobistych użytkowników”.

=> Nawet przy próbie przyjęcia zaakceptowanej odpowiedzi „Personal” jako nazwy kontenera (sn -i temp.pfx personal), nie udaje się przeanalizować klucza:

Nie można przeanalizować blobu PKCS # 12 w ALiS_TemporaryKey.pfx - wystąpił błąd wewnętrzny o cc.

Pytanie o przepełnienie stosuUżywanie MSBuild do podpisywania ClickOnce lub wyników montażu w błędzie MSB3321

=> Próbowałem zaakceptowanej odpowiedzi, ale pliku klucza nie można zaimportować, ponieważ„Profil użytkownika jest niedostępny lub importowany klucz prywatny może wymagać dostawcy usług kryptograficznych, który nie jest zainstalowany w systemie”

=> To samo dzieje się, gdy próbuję zaimportować plik, klikając go dwukrotnie w Eksploratorze Windows (sugestia RobinDotNet)

Pytanie o przepełnienie stosuPodpisywanie zespołów za pomocą plików PFX w MSBuild, Team Build i TFS

=> OP tego pytania również nie powiodło się z powyższymi dwiema odpowiedziami, ale niestety nawet odpowiedzi, które otrzymał, nie pomogłyby mi:

Zaloguj się jako użytkownik, który uruchamia MSBuild na komputerze kompilacji, ręcznie wywołaj MSBuild, a następnie wpisz hasło po wyświetleniu monitu.

=> Zalogowałem się i uruchomiłemmsbuild myproject.sln ale nawet nie poprosi mnie o hasło.

Ostatecznie naprawiłem dla mnie konto, na którym usługa TFS Build uruchamia administratora na lokalnym komputerze.

=> Konto, na którym działa Hudson (dokładniej:Kocur) jużjest lokalny administrator. Próbowałem uruchomić MSBuild z wiersza poleceń „Uruchom jako administrator” i nadal otrzymywałbym te same komunikaty o błędach.

Aktualizacja: Próbowałem otworzyć rozwiązanie w Visual Studio na tym samym serwerze i zbudować go. Dostaję ten sam błąd. Kiedy próbuję ponownie zaimportować plik PFX na karcie Podpisywanie właściwości projektu, mówi mi „nieprawidłowe hasło”. Jeśli próbuję zaimportować ten sam plik w tym samym rozwiązaniu w Visual Studio na mojej stacji roboczej i podać to samo hasło, jest ono akceptowane.

Aktualizacja 2: Jeśli zabiorę stary klucz tymczasowy, który wygenerowałem za pomocą Visual Studio 2008, można go z powodzeniem zaimportować do bazy certyfikatów naszego serwera; żadnych tymczasowych kluczy, które niedawno utworzyłem w Visual Studio 2010, nie można importować.

Aktualizacja 3: Udało mi się utworzyć nowy „klucz tymczasowy” w Visual Studio na serwerze i używać go zarówno na serwerze, jak i na mojej stacji roboczej do podpisywania manifestu ClickOnce. Nie potrafię wyjaśnić tego w sensowny sposób - oba komputery są 64-bitowe i używam Visual Studio 2010 na obu. Obie mają zainstalowany system .NET w wersji 3.5 i v4 (4.0.30319). Moja stacja robocza to Windows 7 Professional, a serwer toWindows Server 2008 R2 Standard.

questionAnswers(4)

yourAnswerToTheQuestion