2010-10-25 21 views
7

Varolan WCF hizmetimi (zaten konsol uygulaması olarak iyi çalışıyor) yapmak için Windows Hizmetim olan Windows 7 makinemde de geliştirme görevim olan here numaralı adımları izledim.WCF Windows Service hizmeti olarak hizmet (Windows 7)

olursa olsun ınstallutil kullanmanın son adımı yaparken, komut satırında aşağıdaki mesajı alıyorum ne çalıştığımız:
System.BadImageFormatException: kurulum başlatılırken

İstisna oluştu: Dosya veya montaj dosyası 'dosya: /// [yol burada]' veya bağımlılıklarından biri yüklenemedi.
bir girişimde hatalı biçimdeki bir program yüklenmek istendi ..

Ben ServiceBase benim konsol uygulaması ana sınıfı devralma ve OnStart ve OnEnd yöntemlerini uygulamak.

[RunInstaller(true)] özniteliği ile işaretli System.Configuration.Install.Installer özniteliğinde ve yapıcıda sağladıkları kodla ProjectInstaller sınıfını miras ekledim.

Daha önce denedim ki yukarıdaki makalede bahsedilmemiş mi? Orada

  • güçlü EXE dosyasına anahtarı ve verilmesi tüm DLL o
  • kullanıyor EXE dosyasının bulunduğu dizine gezinme ve installutil çalışan yönetici
  • olarak komut satırını Running

    1. Ayrıca, /LogFile=myLog.txt ile belirtirken bile herhangi bir günlük dosyası almıyorum.

      Herhangi bir fikir kabul edilir, teşekkürler.

  • +0

    :

    Burada yer alan ınstallutil kullandığından emin olun. Bazen yol ortamı değişkeni .Net'in başka bir sürümüne işaret eder ve bu durumda bu hatayı alırsınız. –

    +0

    Teşekkürler, .NET 4 klasörünün yolunu genel olarak Windows yoluna ekledim ve kodum da .NET 4'tür, bu durumda durum böyle değil. –

    cevap

    6

    Bu 32-/64-bit bir sorun gibi kokuyor.

    Makineniz 64 bit Windows 7 herhangi bir şansa sahip mi? Hizmetiniz bir şekilde bir COM bileşeni veya bir şey gibi bir şey 32-bit başvuruyor mu?

    Bunu düzgün çalışması için almak için Visual Studio x86 platformu eşyalarını derlemek gerekebilir

    ... montaj .NET framework eski bir sürümünde yüklendiğinde

    +1

    Hemen yerinde! Asla tahmin edemezdim. Makinem 64 bit ama hiçbir kodun hiçbir yerinde 32 bit, COM bileşeni yok .. belki varsayılan 32 bit hiç kontrol etme şansı olmadı. –

    3

    BadImageFormat istisnalar genellikle (oluşabilir 4.0 olmadan bir makinede 4.0 montajı). Aynı makinede çalıştığınız için, tahminim, installutil'in doğru sürümünü kullanmamanız olurdu. Bu belirgin görünür, ama InstallUtil.exe Net doğru sürümden olduğundan emin hale getirebilir C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319

    +1

    Teşekkürler, postanız beni çözüme yönlendirdi: 32 bit sürümü yerine C: \ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319'dan installutil kullanıyordum: S –

    +1

    + 1 Bu sürümü installutil kullanıyordum ama Windows hizmet projemde "build-> platform hedefi" x64 yerine x86 olarak ayarlandı. Bunu değiştirdikten sonra benim için çalıştı. –

    İlgili konular