Soru Microsoft.Office.Interop montajlarını 2013 ofisi ile hala kullanabilir miyim?


Daha eski bir projeyi (.Net 2'de) Visual Studio 2013'e almak zorunda kaldım, Microsoft Primary Interop Assemblies'ı kullanıyor.

Visual Studio, projeye referans eklemem gerektiğini söyledi. Şimdi gittim ve biraz okuma yaptım ve görünüşe göre Microsoft, 2010 PIA for ofisini yayınladı. (Office 2013'üm var)

Şimdi bilmek istediğim şey şu.

  1. 2013 yılı ofisi ile çalışabilir miyim ve geriye dönük uyumlu olabilir miyim?
  2. Ve eğer öyleyse bu gelecek için gitmek için iyi bir yol mu? Uyumlu olacak mı? Çünkü ihtiyacın olduğunu görüyorum .Net 2 (en geç) ve Windows 8, 4.5 ile birlikte gelir ve 3 (varsayılan olarak) gelir ve çoğu yeni bilgisayar Office 2012 veya 2013'e sahip olur.

44
2018-01-09 07:17


Menşei


Aynı problemle karşılaştım ve çalışan bir çözüm buldum: microsoftsupportchat.com/blog/post/...


Cevaplar:


PIA'lar sadece eski .NET sürümleri (v4'ten önce) için gerekli olan tarihsel bir eserdir. "No PIA" özelliği olarak da bilinen "Embed Interop Types" özelliği ile tamamen ve zarif bir şekilde değiştirildi. Visual Studio 2010'dan bu yana desteklenen, bir referans derleme seçtiğinizde Özellikler penceresinde geri bulacaksınız. Varsayılan True. Temel teknolojiyi kapsayan iyi bir video burada mevcut.

Microsoft'un Office 2013 için PIA'ları yayınlamamasının nedeni de bunun yerine birlikte çalışma türlerini yerleştirmenizi bekler.

Bu özellik çok arzu edilir, müşterinizin PIA'lerini makineye yüklemesi ve bunları sizin yükleyicinize eklemeniz için önler. Ne zaman ilgilenirse sorunu çözmek, tamamen yaygın bir yanlışlık. Ayrıca, Office için PIA'lar çok büyüktür, birlikte çalışma türlerini yerleştirmenin en büyük avantajı, derlemenizin yalnızca kullandığınız türleri içermesidir. Birçok megabayt bir kaç kilobayta düştü.

İş akışı biraz farklı. Bir referans eklemek yerine Microsoft.Office.Interop Referans Ekle iletişim kutusunda, .NET Framework sekmesinde bulunan montajları şimdi COM sekmesini kullanın. Ve al, "Microsoft Excel 15.0 Object Library"Excel kullanan bir program için birlikte çalışma türleri oluşturmak için. Daha önce PIA'lar kullanılan eski bir proje yüklerseniz, o zaman bu referans derlemelerini kaldırın ve COM sekmesinden geri ekleyin.

Özellikle, dev makinenize yüklemediğiniz eski bir Office sürümünü kasıtlı olarak hedefleyen bir özelliğin kaybolduğunu unutmayın. Bu bir gereklilikse, o zaman bu sürüm için PIA'lara ihtiyacınız var, Özellikler penceresindeki Embed Interop Türlerini True olarak zorlar. Aslında bunu yapmak sorgulanabilir, Microsoft'un yeni Office sürümlerini eski sürümlerle tamamen uyumlu hale getirmekte zorlanıyor. 15 yıldır tuttular ama buhar tükendi. En kötü durum senaryosu, makinenize kurduğunuzdan daha yeni bir sürümü hedefliyor, bu da programınızın çökmesine neden oluyor. çok gibi istisnaları teşhis etmek zor AccessViolationException.

Çalışmasına izin vermek için kodunuzda küçük değişiklikler yapmanız gerektiğini unutmayın. Sentetik "XxxxClass"dersler gömülü değil, sadece"Xxxx"arayüzler. Sadece kelimeyi kaldır"Class"dan yeni Beyan.


119
2018-01-09 11:05



Hey ... MS Word raporlaması oluşturuyorum. MS Word'ün modern sürümü için OpenXML formatını dava ettim Microsoft.Office.Interop.Word? Lütfen açıklığa kavuşturabilir misiniz? Teşekkürler! - Academy of Programmer
Bu cevaba tek itirazım, Office 2013 ARE için PIA'nın hala yayınlanmış olmasıdır - örneğin, eğer VS2013 kuruluysa, bunları C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ Office için Visual Studio Araçları'nda bulabilirsiniz. PIA \ Office15 - Dan Ling
Bu sadece tarihin bir parçası. Bunlara daha yakından bakacak olursanız, ildasm.exe, daha sonra .NET 2.0.50727'yi hedeflediklerini göreceksiniz. Katıştırma türü .NET 4 gerektirir. Yalnızca VSTO, daha eski .NET sürümlerini hedeflemeyi desteklediğinden oradalar. Onları dağıtmak, işin tam olarak işidir, müşteri yardım edemez. - Hans Passant
Yeni referansı (COM'dan) kullanırsam, Office 2007 yüklü olan bilgisayarda çalışacaktır (mayın 2016 ofisi var) - Dani
Sadece cevabı okuyun, "Bir özellik kaybolduğunu unutmayın". - Hans Passant


Office 365 ile VS 2015 Topluluğu - hangi sebepten olursa olsun COM nesnesinden çalışmıyor. Çözüm GAC'ye gidip birlikte çalışma derlemelerini bulur, bunları geçici bir dizine kopyalar ve sonra projenize herhangi bir DLL gibi ekler.


4
2017-09-26 14:58





Ayrıca, şu ana kadar bilmediyseniz, Windows 8'in daha eski .NET Framework sürümleri vardır, ancak bunlar varsayılan olarak yüklenmez. Program Özelliklerine gidin ---> Windows ---- 'e özellikler ekleyin> ve ilk onay kutusu .NET 3.0 ve belki 2.0 olmalıdır. Bir WSUS sunucusundaysanız, Windows'un Windows Update sunucularından dosyaları almasını söylemeniz gerektiğini unutmayın. Umarım yardımcı olur!


1
2017-07-16 14:28





Resmi olarak PIA'nın Office için geriye dönük uyumluluğu yoktur. Aslında işe yarıyor.

Geriye dönük uyumluluk nedeniyle birkaç yıldır PIA for Office XP kullanıyorum ve Office XP, 2003, 2007 ve 2010 (henüz 2013 ile test edilmemiştir) ve Windows XP, Vista, 7 ve 8'de çalışıyor.

Windows'un farklı sürümleriyle uyumluluk için .NET framework 3.5 kullanıyorum.

Gelecek için ... PIA ile ne yaptığınıza bağlı. Mümkünse, Açık XML dosyaları ile doğrudan ilgilenmek veya kelime / excel için bir eklenti oluşturmak çok daha iyidir.


0
2018-01-09 09:50



OpenXML YAZICI DEĞİLDİR! Belgeler ayıptır. Örnek kod bulmak imkansız. (OpenXML'de bir hücrenin arkaplan rengini elde etmeye çalışın! İyi eğlenceler!) Ama esas olarak OpenXML bir çözüm değildir çünkü formüller hiçbiri yürütülmez. Yani bir hücrenin içeriği bir formül tarafından doldurulursa, gerçek Office otomasyonu kullanmadıkça hücrenin sahip olduğu değeri bilmezsiniz. - Elmue


Visual Studio 2013 ifadesinin artık ofis desteği olmadığını öğrendim. Bu yüzden en azından çalışması için pro-versiyona ihtiyacınız var.


0
2017-08-11 11:54



Visual Studio 2015 Topluluk Sürümü kullanıyorum. Ayrıca Office desteği yoktu. Ancak, VS 2015 için indirilebilir aka.ms/officedevtoolsforvs2015 Bunu açıklayan yazı burada: blogs.msdn.microsoft.com/visualstudio/2016/04/26/... - Aendie