Aracılığıyla paylaş


.NET Framework 4'e Taşıdığınız Excel ve Word Projelerini Güncelleme

Aşağıdaki özellikleri kullanan bir Excel veya Word projeniz varsa ve hedef Framework .NET Framework 4'e değiştirildiyse kodunuzu değiştirmelisiniz:

  • Akıllı etiketler

  • GetVstoObject ve HasVstoObject yöntemleri

  • Belge düzeyi projelerindeki oluşturulan sınıflar

  • Belgelerde Windows Forms denetimleri

  • Word içerik denetimi olayları

  • OLEObject ve OLEControl sınıfları

  • Controls.Item(Object) özelliği

  • CollectionBase'den türetilen derlemler

Ayrıca kaldırmalısınız Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute için retargeted Excel projelerden .NET Framework 4. Visual Studio otomatik olarak kaldırmaz bu öznitelik için.

ExcelLocale1033 Özniteliğini Excel Projelerinden Kaldırma

Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute Kısmı kaldırılmış olan Visual Studio 2010 Tools for Office Çalışma Zamanı Modülü hedefleyen çözümleri için kullanılan .NET Framework 4. .NET Framework 4 ortak dil çalışma zamanı (CLR) Excel nesne modeline her zaman 1033 yerel ayar kimliğini geçirir ve artık bu özniteliği bu davranışı devre dışı bırakmak için kullanamazsınız. Daha fazla bilgi için bkz. Excel'de Çeşitli Bölgesel Ayarlarla Veri Biçimlendirme.

ExcelLocale1033Attribute'unu kaldırmak için

  1. Proje Visual Studio'da açıkken, Çözüm Gezgini'ni açın.

  2. Özellikler (C# için) veya My Project (Visual Basic için) düğümünün altında, kod düzenleyicisinde açmak için AssemblyInfo kod dosyasına çift tıklayın.

    Not

    Visual Basic projelerinde AssemblyInfo kod dosyasını görmek için Çözüm Gezginindeki Tüm Dosyaları Göster düğmesine tıklamalısınız.

  3. Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute'u bulun ve ya dosyadan kaldırın yada açıklama olarak kodun dışına çıkarın.

    <Assembly: ExcelLocale1033Proxy(True)>
    
    [assembly: ExcelLocale1033Proxy(true)]
    

Akıllı etiketleri oluşturan kod güncelleştiriliyor

Akıllı etiket oluşturan bir Excel veya Word projeniz varsa ve hedef Framework'ü değiştirdiyseniz kodunuzda şu değişiklikleri yapmalısınız:

  • Akıllı etiket ve eylem nesneleri oluşturan tüm kodu değiştirin.

  • Özel bir tanıyıcıyla akıllı etiket sınıfı tanımlayan tüm kodu değiştirin.

Not

Excel 2010 ve Word 2010'de akıllı etiketlerin kullanımı terk edilmiştir. Daha fazla bilgi için bkz. Akıllı Etiketlere Genel Bakış.

Daha fazla bilgi için aşağıdaki yönergelere bakın.

Akıllı Etiket ve Eylem Nesneleri Oluşturma

Kodunuzda akıllı etiket ve eylem nesnesi oluşturma yolunuzu değiştirmelisiniz. .NET Framework 3.5'i hedefleyen projelerde akıllı etiket ve eylem türleri doğrudan örneklenebilen sınıflardır. .NET Framework 4'i hedefleyen projelerde bu türler doğrudan örneklenemeyen arayüzlerdir.

Eğer projenizin hedef çatısı .NET Framework 4'e değiştiyse, projenizde akıllı etiket ve eylem nesnelerini Globals.Factory özelliği tarafından sağlanan yöntemleri kullanarak oluşturmalısınız. Daha fazla bilgi için bkz. Akıllı Etiketler Mimarisi.

Aşağıdaki tabloda, akıllı etiket ve eylem türleri ve .NET Framework 4'i hedefleyen projelerde bu türleri örneklemek için kullanılacak yöntemler listelenmiştir.

Akıllı etiket ve eylem türleri

.NET Framework 4 projelerinde kullanılacak Factory yöntemi

Microsoft.Office.Tools.Excel.Action

Microsoft.Office.Tools.Excel.Factory sınıfının CreateAction yöntemi.

Microsoft.Office.Tools.Excel.SmartTag

Microsoft.Office.Tools.Excel.Factory sınıfının CreateSmartTag yöntemi.

Microsoft.Office.Tools.Word.Action

Microsoft.Office.Tools.Word.Factory sınıfının CreateAction yöntemi.

Microsoft.Office.Tools.Word.SmartTag

Microsoft.Office.Tools.Word.Factory sınıfının CreateSmartTag yöntemi.

Özel Tanıyıcılarla Akıllı Etiket Sınıfı Tanımlama

Özel bir tanıyıcıyla kendi akıllı etiket sınıfı tanımlarsanız kodunuzu değiştirmelisiniz. .NET Framework 3.5'i hedefleyen projelerde kendi sınıfınızı Microsoft.Office.Tools.Word.SmartTag veya Microsoft.Office.Tools.Excel.SmartTag sınıfından türetirsiniz. .NET Framework 4'i hedefleyen projelerde bunun yerine Microsoft.Office.Tools.Word.ISmartTagExtension veya Microsoft.Office.Tools.Excel.ISmartTagExtension arayüzünü uygulayan bir sınıf tanımlarsınız.

Daha fazla bilgi için bkz. Akıllı Etiketler Mimarisi.

GetVstoObject ve HasVstoObject yöntemlerini kullanan kod güncelleştiriliyor

.NET Framework 3.5'i hedefleyen projelerde GetVstoObject veya HasVstoObject yöntemleri projenizdeki şu yerel nesnelerden birinde genişletme yöntemi olarak kullanılabilirdir: Microsoft.Office.Interop.Word.Document, Microsoft.Office.Interop.Excel.Workbook, Microsoft.Office.Interop.Excel.Worksheet veya Microsoft.Office.Interop.Excel.ListObject. Bu yöntemleri çağırırken parametre geçirmenize gerek yoktur. Aşağıdaki kod örneğinde .NET Framework 3.5'i hedefleyen bir Word eklentisinde GetVstoObject yönteminin nasıl kullanıldığı gösterilmektedir.

Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _
    Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject()
Microsoft.Office.Tools.Word.Document vstoDocument = 
    Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject();

.NET Framework 4'i hedefleyen projelerde bu yöntemlere aşağıdaki yollardan biri ile erişmek üzere kodunuzu değiştirmelisiniz.

  • Bu yöntemlere hâlâ Microsoft.Office.Interop.Word.Document, Microsoft.Office.Interop.Excel.Workbook, Microsoft.Office.Interop.Excel.Worksheet veya Microsoft.Office.Interop.Excel.ListObject nesneleri üzerinden genişletme yöntemleri olarak erişebilirsiniz. Ancak bu yöntemlere artık Globals.Factory özelliğinin döndürdüğü nesneyi geçirmeniz gerekir.

    Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _
        Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory)
    
    Microsoft.Office.Tools.Word.Document vstoDocument = 
        Globals.ThisAddIn.Application.ActiveDocument.GetVstoObject(Globals.Factory);
    
  • Bu yöntemlere Globals.Factory özelliğinin döndürdüğü nesne üzerinden de erişebilirsiniz. Bu yöntemlere bu yolla erişirken, yöntemle genişletmek istediğiniz yerel nesneyi de geçirmelisiniz.

    Dim vstoDocument as Microsoft.Office.Tools.Word.Document = _
        Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument)
    
    Microsoft.Office.Tools.Word.Document vstoDocument = 
        Globals.Factory.GetVstoObject(Globals.ThisAddIn.Application.ActiveDocument);
    

Daha fazla bilgi için, bkz. Word Belgelerini ve Excel Çalışma Kitaplarını Çalıştırma Zamanında Uygulama Düzeyi Eklentileri İçinde Genişletme ve Belge Düzeyi Özelleştirmelerinde Yerel Office Nesnelerinden Genişletilmiş Nesneleri Alma.

Belge düzeyinde projelerde üretilen sınıfları kullanan kod güncelleştiriliyor

.NET Framework 3.5'i hedefleyen belge düzeyi projelerinde, oluşturulan sınıflar Visual Studio Tools for Office çalışma zamanı modülü'deki şu sınıflardan türetilir:

.NET Framework 4'i hedefleryen projelerde yukarıda listelenen Visual Studio Tools for Office çalışma zamanı modülü'deki türler sınıf değil arayüzdür. .NET Framework 4'i hedefleyen projelerindeki oluşturulan sınıflar Visual Studio Tools for Office çalışma zamanı modülü'deki şu yeni sınıflardan türetilir:

Projenizdeki kod türetildiği temel sınıf gibi bir oluşturulmuş sınıf olgusuna başvuruyorsa kodunuzu değiştirmelisiniz.

Örneğin .NET Frameword 3.5'i hedefleyen bir Excel Çalışma Kitabı projesinde, oluşturulmuş Sheetn sınıfı olgularında bazı işlemler gerçekleştiren yardımcı yöntemleriniz olabilir.

Private Sub DoSomethingToSheet(ByVal worksheet As Microsoft.Office.Tools.Excel.Worksheet)
    ' Do something to the worksheet object.
End Sub
private void DoSomethingToSheet(Microsoft.Office.Tools.Excel.Worksheet worksheet)
{
    // Do something to the worksheet object.
}

Hedefinizi .NET Framework 4'e çevirirseniz kodunuzda aşağıdaki değişikliklerden birini yapmalısınız:

  • Projenizde bir Microsoft.Office.Tools.Excel.WorksheetBase nesnesinin Base özelliğini geçirmek için DoSomethingToSheet yöntemini çağıran bütün kodları değiştirin. Bu özellik bir Microsoft.Office.Tools.Excel.Worksheet nesnesi döndürür.

    DoSomethingToSheet(Globals.Sheet1.Base)
    
    DoSomethingToSheet(Globals.Sheet1.Base);
    
  • DoSomethingToSheet yöntem parametresini Microsoft.Office.Tools.Excel.WorksheetBase nesnesi alacak şekilde değiştirin.

    Private Sub DoSomethingToSheet(ByVal worksheet As Microsoft.Office.Tools.Excel.WorksheetBase)
        ' Do something to the worksheet object.
    End Sub
    
    private void DoSomethingToSheet (Microsoft.Office.Tools.Excel.WorksheetBase worksheet)
    {
        // Do something to the worksheet object.
    }
    

Belgelerin üzerine Windows Forms denetimlerini kullanan kod güncelleştiriliyor

Belgeye ya da çalışma sayfasına program aracılığıyla Windows Forms denetimleri eklemek üzere Controls özelliğini kullanan bütün kodların üst kısmına Microsoft.Office.Tools.Excel veya Microsoft.Office.Tools.Word isim uzayı için using (C#) ya da Imports (Visual Basic) deyimini eklemelisiniz.

.NET Framework 3.5'i hedefleyen projelerde, Windows Forms denetimleri ekleyen yöntemler (örn.AddButton yöntemi) Microsoft.Office.Tools.Excel.ControlCollection ve Microsoft.Office.Tools.Word.ControlCollection sınıflarında tanımlanmıştır.

.NET Framework 4'i hedefleyen projelerde bu yöntemler Controls özelliği üzerinden kullanılabilir olan genişletme yöntemleridir. Bu genişletme yöntemlerini kullanmak için, içerisinde bu yöntemleri kullandığınız kod dosyasında Microsoft.Office.Tools.Excel ya da Microsoft.Office.Tools.Word isim uzayı için using veya Imports deyimlerinin olması gerekir. Bu deyim .NET Framework 4'i hedefleyen yeni projelerde otomatik olarak üretilir. Ancak bu deyim .NET Framework 3.5'i hedefleyen projelerde otomatik olarak eklenmez, dolayısıyla projenizin hedefini değiştirdiğinizde bunu eklemeniz gerekir.

Daha fazla bilgi için bkz. Belgeye Çalışma Zamanında Denetim Ekleme.

Word içerik denetim olayları işleyen kod güncelleştiriliyor

.NET Framework 3.5'i hedefleyen projelerde Word içerik denetiminin olayları genel EventHandler<TEventArgs> temsilcisi tarafından işlenir. .NET Framework 4'i hedefleyen projelerde bu olaylar diğer temsilciler tarafından işlenmektedir.

Aşağıdaki tabloda, Word içerik olayları ve .NET Framework 4'i hedefleyen projelerde bunlarla ilişkili temsilciler listelenmektedir.

Olay

.NET Framework 4 projelerinde kullanılacak temsilci

Added

ContentControlAddedEventHandler

ContentUpdating

ContentControlContentUpdatingEventHandler

Deleting

ContentControlDeletingEventHandler

Entering

ContentControlEnteringEventHandler

Exiting

ContentControlExitingEventHandler

StoreUpdating

ContentControlStoreUpdatingEventHandler

OLEObject ve OLEControl sınıfları kullanan kod güncelleştiriliyor

.NET Framework 3.5'i hedefleyen projelerde, belgeye ya da çalışma sayfasına Microsoft.Office.Tools.Excel.OLEObject ve Microsoft.Office.Tools.Word.OLEControl sınıflarını kullanarak özel denetimler (örn. Windows Forms kullanıcı denetimleri) ekleyebilirsiniz.

.NET Framework 4'i hedefleyen projelerde bu sınıfların yerini Microsoft.Office.Tools.Excel.ControlSite ve Microsoft.Office.Tools.Word.ControlSite arayüzleri almıştır. Microsoft.Office.Tools.Excel.OLEObject ve Microsoft.Office.Tools.Word.OLEControl'e başvuran kodları Microsoft.Office.Tools.Excel.ControlSite ve Microsoft.Office.Tools.Word.ControlSite'a başvuracak şekilde değiştirmeniz gerekir. Yeni isme sahip olmaları dışında bu denetimler .NET Framework 3.5'te davrandıkları biçimde davranırlar.

Daha fazla bilgi için bkz. Belgeye Çalışma Zamanında Denetim Ekleme.

Controls.Item(Object) özelliğini kullanan kod güncelleştiriliyor

.NET Framework 3.5'i hedefleyen projelerde belge ya da çalışma sayfasının belirli bir denetimi olup olmadığını anlamak için Microsoft.Office.Tools.Word.Document.Controls ya da Microsoft.Office.Tools.Excel.Worksheet.Controls derleminin Item(Object) özelliğini kullanabilirsiniz.

.NET Framework 4'i hedefleyen projelerde bu derlemlerden Item(Object) özelliği kaldırılmıştır. .NET Framework 3.5'i hedefleyen projelerde belge ya da çalışma sayfasının belirli bir denetimi olup olmadığını anlamak için Document.Controls ya da Worksheet.Controls derleminin Contains(System.Object) yöntemini kullanın.

Belgelerin ve çalışma sayfalarının Controls derlemi hakkında daha fazla bilgi için bkz. Belgeye Çalışma Zamanında Denetim Ekleme.

CollectionBase türetmek Koleksiyonlar kullanan kod güncelleştiriliyor

İçinde hedefleyen projeler.net Framework 3.5, birçok koleksiyon türleri Visual Studio Tools for Office çalışma zamanı modülü türetilmeli CollectionBase class, gibi Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection, ve Microsoft.Office.Tools.Word.ControlCollection.

.NET Framework 4'i hedefleyen projelerde bu derlem türleri artık CollectionBase'den türetilmiş olmayan arayüzleridir. Bu derlem türlerinde bazı üyeler artık kullanılabilir değildir (örn. Capacity, List, InnerList).

Ayrıca bkz.

Kavramlar

Office Çözümlerini .NET Framework 4'e Taşıma

Akıllı Etiketler Mimarisi

İçerik Denetimleri

Word Belgelerini ve Excel Çalışma Kitaplarını Çalıştırma Zamanında Uygulama Düzeyi Eklentileri İçinde Genişletme

Belge Düzeyi Özelleştirmelerinde Yerel Office Nesnelerinden Genişletilmiş Nesneleri Alma

Belgeye Çalışma Zamanında Denetim Ekleme

Office Projeleri Nesnelerine Genel Erişim

Değişiklik Geçmişi

Tarih

Geçmiş

Nedeni

Mayıs 2010

Kaldırma hakkında bölümüne eklenen Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute Excel projeleri.

Bilgi geliştirme.