2011-08-08 12 views
5

Bir uygulama inşa, bu COM birlikte Excel üretir. Benim ve kullanıcı makinemize iyi çalışıyor: Office 2007, Windows XP SP2. Şimdi başka bir makineye aktarıyorum, Office 2010, Windows 7 64 bit ve hala iyi çalışan VS2008'den görsel stüdyo 2010'u kullanın. Kullanıcı makinemde dağıttığımda, sorunu aldım, aynı Windows 7 64 bit'i kullanıyorlar ancak Office 2007'yi kullanıyorlar.Office 2007 PIA

Office 2007 PIA, Win7 64 bit ve Office 2010 makineme yüklerse, başvuruyu değiştirin. Görsel stüdyo projemde sorunu çözecek mi?

+3

Sorun? * Ne * sorun? –

+0

Her bir ofis aksamını tıklarsanız ve "Tümleşik türleri göm" ü açarsanız ne olur? Bunun, PIA dosyalarının nerede olduğu veya hangi versiyonun kullanıldığıyla ilgilenme ihtiyacını ortadan kaldırdığını düşünüyorum. –

cevap

9

Bu yazı biraz geri olduğunu biliyorum ama yine de benim iki sent atmak düşündüm durumda birisi stumbles. Başparmak

genel bir kural, desteklemeyi planlıyoruz Office eski sürümü ile bağlantılar gelişme yılında PIA sürümünü kullanmaktır. Bu nedenle, Office 2007 ve yukarısını destekleyecekseniz, geliştirme sırasında PIA'lerin 12 sürümünü kullanın.

v12 PIA'lara bir başvuru ekleyin (2007 PIA'lerini çevrimiçi olarak, VSTO aracılığıyla veya daha önce Office 2007'ye sahip olmanız durumunda GAC'den yükleyerek). Şimdi "Tamam, Visual Studio'da v12'ye başvuruyorum, şimdi bunun Office 2007'de çalışması gerektiğini" düşünebilirsiniz. Yanlış. Eğer v12 baþvurduðunuzu ancak Office 2010 montaj diyecekler makinenizi bağlama sırasında, yüklü "Eh, v12 istenir, ama biz GAC yüklü V14 ve PIA ileriye uyumlu olduğundan, biz bunu kullanırız" beri. Açık bir şekilde v12 kullanmasını söylemesine rağmen, bir kurulumun tamamlanmasından sonra makineniz v14 kullanacaktır. Bunu FUSLOG aracılığıyla onaylayabilirsiniz. FUSLOG, montaj bağlaması ile çalışırken mükemmel bir araçtır. Not: FUSLOG şey görmüyoruz ve sen, sen gerektiğini düşünüyorum Internet Explorer tarihinin net her şey ve tekrar deneyin.

sen 'assembly binding redirection' denen durdurmak için gereken Bu sorunu gidermek için. Bu PIA'lar genellikle GAC'de onlarla bir politika dosyasına sahiptir. İlke dosyasının amacı, eski PIA sürümlerini derlemeyi çözerken daha yeni sürümlere yönlendirmektir. Bunu görmek için aşağıdakileri yapın:

  1. Basın 'Windows tuşu + R' çalıştırmak menüsünü açın.
  2. 'C: \ Windows \ Assembly \ GAC' yazın ve Enter tuşuna basın. Not: Bir 32 bit makinesini çalıştırıyorum. PIA'larınızın büyük olasılıkla GAC'de 'C: \ Windows \ Assembly \ GAC_MSIL' gibi farklı bir konuma kurulacaktır.

GAC'ye girdiğinizde, aşağıya doğru kaydırın ve başvurduğunuz PIA'ların klasörlerini arayın (ör. Microsoft.Office.Interop.Excel). Kaydırmaya devam ederseniz, 'İlke' ile başlayan klasörleri, ardından bir sayıyı, ardından da PIA'nın adını görmelisiniz (ör. Policy.12.0.Microsoft.Office.Interop.Excel). Bu, bağlayıcı yeniden yönlendirmeyi gerçekleştiren ilke dosyasıdır. Bu klasör içinde XML yapılandırma dosyası açın ve aşağıdakine benzer bir durumla: Yukarıdaki kod snippet'inde

<?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> 

, etiketi "bindingRedirect OldVersion ..." sorumludur PIA montaj yönlendirmesi.Eğer aşağıdaki gibi bir kod dışında bir açıklama ise:

<?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> 
O zaman bu yönlendirme dikkate alınmayacaktır. Dosyayı, eski Office sürümleri için geliştirilirken değil, iyi bir amaca hizmet ettiğinden, basitçe silmek yerine yorum yaparım. Gereksinim duyduğunuz her PIA İlke dosyasında bunu gerçekleştirin ve geliştirme makineniz yeniden yönlendirmeyi durduracaktır.

Umarım bu soruya cevap verir!

+1

Bu önemli bir bilgi parçasıdır! Uygulamamın dağıtımıyla ilgili birçok sorun yaşadım çünkü sorunun kökenini anlamadım. Visual Studio, her zaman yukarıda açıklanan şekilde ve https://msdn.microsoft.com/en-us/library/2fc472t2%28v=vs.100%29.aspx adresinde yeniden yönlendirilmiş olsa da, referencename içindeki orijinal Sürüm 11'i her zaman gösterdi. – DrMarbuse