2012-06-22 6 views
9

kullanarak bir ClickOnce bildirimi imzalayamıyor Bir Windows Server bilgisayarında bir ClickOnce Windows Forms projesi (.NET 3.5/Visual Studio 2010) oluşturmaya çalışıyorum. (HudsonCI ile oluşturma işlemini otomatikleştirmek için bir çaba.) MSBuild, bir geçici anahtar (MSB3326 ve MSB3321 hataları)

ClickOnce manifestosunu imzalanması için ben, temp.pfx Visual Studio geçici anahtar yarattı. Projemi iş istasyonumda Visual Studio'dan başarıyla oluşturabilir ve dağıtabilirim. Ben aşağıdaki hata iletilerini almak sunucuda MSBuild çalıştırırken Ama:

C

: \ Windows Microsoft.NET \ Framework64 \ v4.0.30319 \ \ Microsoft.Common.targets (1970,9): Hata MSB3326: Can not Aşağıdaki anahtar dosyasını içe aktarın:. Anahtar dosya şifre korumalı olabilir. Bunu düzeltmek için sertifikayı tekrar içe aktarmayı deneyin veya sertifikayı geçerli kullanıcının kişisel sertifika deposuna el ile içe aktarın. [C: .hudson \ jobs [...] .csproj]

C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Microsoft.Common.targets (1970,9): hata MSB3321: anahtar alma "temp.pfx" dosyası iptal edildi. [C: .hudson \ işler [...] csproj.]

Şans olmadan aşağıdaki soruların ve cevapların hepsi çalıştı:

  • yığın taşması soruya Cannot import the keyfile 'blah.pfx' - error 'The keyfile may be password protected'

    => Benim durumumda, hata mesajı bir sertifika deposunun adını belirtmiyor, ancak bunun yerine "geçerli kullanıcının kişisel sertifika deposu" yazıyor. Konteyner adıyla (sn -i temp.pfx personal) olarak "Kişisel" ile kabul edilen cevap çalışırken

    => bile, bu anahtar ayrıştırmak başarısız: ALiS_TemporaryKey.pfx içinde PKCS # 12 damla ayrıştırma başarısız

    - - Bir iç hata o ccurred.

  • yığın taşması soru Using MSBuild to sign ClickOnce or assembly results in error MSB3321

    => kabul ettim cevabını çalıştı, ancak "Ya kullanıcı profili erişilemez veya özel anahtar ithal ediyoruz, çünkü anahtar dosyası alınamaz Sisteminizde yüklü olmayan bir şifreleme hizmeti sağlayıcısı gerektirebilir "

    => Windows Gezgini'nde (RobinDotNet'in öneri) çift tıklatarak dosyayı içe aktarmaya çalışırsam, aynı şey olur.

  • yığın taşması soru Signing assemblies with PFX files in MSBuild, Team Build, and TFS

    => söz konusu sorunun OP bana yardımcı olacağını var çok, ama ne yazık bile cevaplar o, yukarıdaki iki cevapları ile başarısız oldu:

    MSBuild'i yapı makinesinde çalıştıran kullanıcı olarak oturum açın, MSBuild'i el ile çağırıp istendiğinde parolayı yazın.

    => Oturum açtım ve msbuild myproject.sln numaralı telefonu çalıştırdım, ancak parola için bana sormadı.

    Sonunda benim için ne düzelttiyse, TFS Build hizmetinin yerel makinede yönetici çalıştırdığı hesabı oluşturuyordu.

    => (daha doğrusu: Tomcat) Hudson çalışır hesabı yerel yönetici olan zaten. MSBuild'i "Run As Administrator" komut satırından çalıştırmayı denedim ve yine aynı hata iletilerini almaya çalıştım.


Güncelleme

: Ben aynı sunucuda Visual Studio çözüm açın ve onu inşa etmeye çalıştı. Aynı hatayı alıyorum. PFX dosyasını proje özellikleri 'İmzalama sekmesinde yeniden içe aktarmaya çalıştığımda, bana "geçersiz şifre" yazıyor. Aynı dosyayı Visual Studio'daki aynı dosyaya iş istasyonumda aktarmaya ve aynı parolayı sağlamaya çalışırsam kabul edilir.

Güncelleme 2: Ben Visual   Studio   2008 başarıyla bizim sunucunun sertifika deposunda alınabilir ile oluşturulan eski bir geçici anahtarı alırsak; Visual Studio 2010 ile yeni oluşturduğum geçici anahtarlar alınamıyor.

Güncelleme 3: sunucuda Visual Studio'da yeni "geçici anahtar" oluşturmak ve sunucu üzerinde hem de ClickOnce manifestosunu imzalanması için benim iş istasyonu üzerinde her ikisini de kullanmak başardı. Sadece bunun için makul bir açıklama yapamıyorum - her iki bilgisayarda da 64-bit ve Visual Studio 2010'u her ikisinde de kullanıyorum. Her ikisi de v3.5 ve v4 (4.0.30319). NET framework yüklü. İş istasyonum bir Windows 7 Professional ve sunucu bir Windows Server 2008 R2 Standard.

cevap

6

PFX dosyasını, üzerinde yaptığınız makineye kopyalayın. Üzerine çift tıklayın ve makinedeki sertifika yöneticisine yükleyin. Yapıları yapmak için kullanılan hesaba giriş yaptığınızdan emin olun.

Diğer öneriler/sorular: Makinede .NET'in doğru sürümü yüklü mü? Bu makinedeki sertifika deposuna yazmanız için ayrıcalıklarınız var mı?

Visual Studio projesini açarsanız, proje özelliklerine gidin ve yeni bir sertifika oluşturmaya çalışın, işe yarıyor mu? Bir PFX dosyası oluşturmalı ve projeye eklemelidir. Ve sertifika deposunda (Başlat/certmgr.msc menüsü) görebiliyor musunuz?

+0

Bu, bahsettiğim ikinci yaklaşımla aynı sonucu verir :-( – chiccodoro

+0

Dürüst olmak gerekirse, "Hudson" ın ne olduğunu bilmiyorum. Makinede .NET'in doğru sürümü var mı? Eğer görsel stüdyo projeyi açmak ve proje özelliklerine gidip çalışır, yeni bir sertifika oluşturmak çalışırsanız? o makinede sertifika deposuna yazma ayrıcalığına sahiptir? Bu bir pfx dosyası oluşturmak ve projeye ekleyin gerekir. ve sertifika deposunda görebilirsiniz (certmgr.msc/başlangıç) – RobinDotNet

+0

bir yan not Hudson sadece bir ayrıntıyı yapmak olarak Öneriniz gelince – chiccodoro

-1

Aynı Sorun vardı, TFS makinesinde içe aktarılamadı. Çıktı geliştirici makine (proje özellikleri, imzalama sayfası, daha fazla ayrıntıya tıklayın) daha ayrıntılı olarak -> sekme detayları ve daha sonra sadece bir parola ile vermek zorunda çıktı. Dışa aktarılan dosyayı TFS'ye kopyalayın ve aynı parolayı kullanın: done

+0

Bu adımlar gerçekten yararlı olmak için çok belirsiz. –

0

Eğer bir temporary.pfx dosyası oluşturursanız ve şifreni EMPTY bırakırsanız, yapı makinesinde iyi çalışacağını buldum. Onu boş bırakabileceğini ve ilk kez OP için olduğu gibi başarısız olduğunu anlayamadım. Şifre olmadan ikinci bir temp.pfx oluşturdum ve benim için yapı sunucusunda oluşturuldu.

+0

Şifre olmadan PFX çok güvenli değil :-) – chiccodoro

0

Tamamen aynı sorun vardı. Ve inşa makinesinde .net 4.0 için Windows SDK 7.1 yükleyerek düzeltildi.İlk başta yükledim SDK 8.0a ve yapı anda PS şarkı haricinde iyi çalışıyordu. Görünüşe göre, 7.1 sistemdeki bazı bileşenleri günceller, böylece pfx çalışmaya başlar.