.NET Framework 4.5으로 마이그레이션하는 Excel 및 Word 프로젝트를 업데이트 합니다.Update Excel and Word projects that You migrate to the .NET Framework 4.5

다음 기능 중 하나를 사용하는 Excel 또는 Word 프로젝트가 있는 경우 대상 프레임워크가 .NET Framework 4.NET Framework 4 이상으로 변경되면 코드를 수정해야 합니다.If you have an Excel or Word project that uses any of the following features, you must modify your code if the target framework is changed to the .NET Framework 4.NET Framework 4 or later:

Excel 프로젝트에서 ExcelLocale1033 특성 제거Remove the ExcelLocale1033 attribute from Excel projects

는 이상을 Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute 대상으로 하는 솔루션에 사용 되는 Visual Studio 2010 Tools For Office runtime 부분에서 제거 되었습니다 .NET Framework 4.NET Framework 4 .The Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute has been removed from the portion of the Visual Studio 2010 Tools for Office runtime that is used for solutions that target the .NET Framework 4.NET Framework 4 or later. .NET Framework 4.NET Framework 4 이상의 CLR(공용 언어 런타임)은 항상 Excel 개체 모델에 로캘 ID 1033을 전달하며, 더 이상 이 특성을 통해 이 동작을 사용하지 않도록 설정할 수 없습니다.The common language runtime (CLR) in the .NET Framework 4.NET Framework 4 and later always passes locale ID 1033 to the Excel object model, and you can no longer use this attribute to disable this behavior. 자세한 내용은 Excel 솔루션의 세계화 및 지역화를 참조 하세요.For more information, see Globalization and localization of Excel solutions.

ExcelLocale1033Attribute를 제거하려면To remove the ExcelLocale1033Attribute

  1. Visual Studio에서 프로젝트를 열고 솔루션 탐색기 를 엽니다.With the project open in Visual Studio, open Solution Explorer.

  2. 속성 노드(C#의 경우) 또는 My Project 노드(Visual Basic의 경우) 아래에서 AssemblyInfo 코드 파일을 두 번 클릭하여 코드 편집기에서 엽니다.Under the Properties node (for C#) or the My Project node (for Visual Basic), double-click the AssemblyInfo code file to open it in the code editor.

    참고

    Visual Basic 프로젝트에서 AssemblyInfo 코드 파일을 보려면 솔루션 탐색기 에서 모든 파일 표시 단추를 클릭해야 합니다.In Visual Basic projects, you must click the Show All Files button in Solution Explorer to see the AssemblyInfo code file.

  3. Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute를 찾아 파일에서 제거하거나 주석으로 처리합니다.Locate the Microsoft.Office.Tools.Excel.ExcelLocale1033Attribute and either remove it from the file or comment it out.

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

ExcelLocal1033Proxy 클래스에 대 한 참조 제거Remove a reference to the ExcelLocal1033Proxy class

Microsoft Visual Studio 2005 Tools for the Microsoft Office System을 사용하여 만든 프로젝트는 Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy 클래스를 사용하여 Excel Application 개체를 인스턴스화합니다.Projects that were created by using Microsoft Visual Studio 2005 Tools for the Microsoft Office System instantiate the Excel Application object by using the Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy class. 이 클래스는 이상을 대상으로 하는 솔루션에 사용 되는 Visual Studio 2010 Tools for Office runtime 부분에서 제거 되었습니다 .NET Framework 4.NET Framework 4 .This class has been removed from the portion of the Visual Studio 2010 Tools for Office runtime that's used for solutions that target the .NET Framework 4.NET Framework 4 or later. 따라서 이 클래스를 참조하는 코드 줄을 제거하거나 주석으로 처리해야 합니다.Therefore, you must remove or comment out the line of code that references this class.

ExcelLocal1033Proxy 클래스에 대한 참조를 제거하려면To remove the reference to the ExcelLocal1033Proxy class

  1. Visual Studio에서 프로젝트를 열고 솔루션 탐색기 를 엽니다.Open the project in Visual Studio, and then open Solution Explorer.

  2. 솔루션 탐색기 에서 ThisAddin.cs (c #의 경우) 또는 ThisAddin (Visual Basic의 경우)에 대 한 바로 가기 메뉴를 열고 코드 보기 를 선택 합니다.In Solution Explorer, open the shortcut menu for ThisAddin.cs (for C#) or ThisAddin.vb (for Visual Basic), and then choose View Code.

  3. 코드 편집기의 VSTO generated code 영역에서 다음 코드 줄을 주석으로 처리합니다.In the Code Editor, in the VSTO generated code region, remove or comment out the following line of code.

    Me.Application = CType(Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(GetType(Excel.Application), Me.Application), Excel.Application)
    
    
    this.Application = (Excel.Application)Microsoft.Office.Tools.Excel.ExcelLocale1033Proxy.Wrap(typeof(Excel.Application), this.Application);
    
    

GetVstoObject 및 HasVstoObject 메서드를 사용 하는 코드 업데이트Update code that uses the GetVstoObject and HasVstoObject methods

.NET Framework 3.5를 대상으로 하는 프로젝트에서는 GetVstoObject 또는 HasVstoObject 메서드를 프로젝트에 있는 네이티브 개체 Document, Workbook, Worksheet 또는 ListObject 중 하나에서 확장 메서드로 사용할 수 있습니다.In projects that target the .NET Framework 3.5, the GetVstoObject or HasVstoObject methods are available as extension methods on one of the following native objects in your project: Document, Workbook, Worksheet, or ListObject. 이러한 메서드를 호출하는 경우 매개 변수를 전달할 필요가 없습니다.When you call these methods, you do not need to pass a parameter. 다음 코드 예제에서는 .NET Framework 3.5를 대상으로 하는 Word VSTO 추가 기능에서 GetVstoObject 메서드를 사용 하는 방법을 보여 줍니다.The following code example demonstrates how to use the GetVstoObject method in a Word VSTO Add-in that targets the .NET Framework 3.5.

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.NET Framework 4 이상을 대상으로 하는 프로젝트에서는 다음 방법 중 하나로 이러한 메서드에 액세스하도록 코드를 수정해야 합니다.In projects that target the .NET Framework 4.NET Framework 4 or later, you must modify your code to access these methods in one of the following ways:

  • Document, Workbook, Worksheet또는 ListObject 개체에서 확장 메서드로 이러한 메서드에 계속 액세스할 수 있습니다.You can still access these methods as extension methods on Document, Workbook, Worksheet, or ListObject objects. 그러나 이제 Globals.Factory 속성에 의해 반환된 개체를 이러한 메서드에 전달해야 합니다.However, you must now pass the object returned by the Globals.Factory property to these methods.

    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);
    
  • 또는 Globals.Factory 속성에 의해 반환된 개체에서 이러한 메서드에 액세스할 수 있습니다.You can alternatively access these methods on the object that is returned by the Globals.Factory property. 이런 방식으로 이러한 메서드에 액세스하는 경우 확장하려는 네이티브 개체를 메서드로 전달해야 합니다.When you access these methods in this way, you must pass the native object that you want to extend to the method.

    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);
    

    자세한 내용은 런타임에 VSTO 추가 기능에서 Word 문서 및 Excel 통합 문서 확장을 참조 하세요.For more information, see Extend Word documents and Excel workbooks in VSTO Add-ins at run time.

문서 수준 프로젝트에서 생성 된 클래스의 인스턴스를 사용 하는 코드 업데이트Update code that uses instances of the generated classes in document-level projects

.NET Framework 3.5를 대상으로 하는 문서 수준 프로젝트에서는 프로젝트에서 생성된 클래스가 Microsoft Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime의 다음 클래스에서 파생됩니다.In document-level projects that target the .NET Framework 3.5, the generated classes in the projects derive from the following classes in the Microsoft Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime:

  • ThisDocument: DocumentThisDocument: Document

  • ThisWorkbook: WorkbookThisWorkbook: Workbook

  • Sheetn:WorksheetSheet n: Worksheet

  • Chartn:ChartSheetChart n: ChartSheet

    .NET Framework 4.NET Framework 4 이상을 대상으로 하는 프로젝트에서는 위에 나열된 Microsoft Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime 의 형식이 클래스가 아닌 인터페이스입니다.In projects that target the .NET Framework 4.NET Framework 4 or later, the types in the Microsoft Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime listed above are interfaces, instead of classes. .NET Framework 4.NET Framework 4 이상을 대상으로 하는 프로젝트에서 생성된 클래스는 Microsoft Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime의 다음 새 클래스에서 파생됩니다.The generated classes in projects that target the .NET Framework 4.NET Framework 4 or later derive from the following new classes in the Microsoft Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime:

  • ThisDocument: DocumentBaseThisDocument: DocumentBase

  • ThisWorkbook: WorkbookBaseThisWorkbook: WorkbookBase

  • Sheetn:WorksheetBaseSheet n: WorksheetBase

  • Chartn:ChartSheetBaseChart n: ChartSheetBase

    프로젝트의 코드가 생성된 클래스 중 하나의 인스턴스를 파생되는 기본 클래스로 참조하는 경우 코드를 수정해야 합니다.If code in your project refers to an instance of one of the generated classes as the base class that it derives from, you must modify the code.

    예를 들어 .NET Framework 3.5를 대상으로 하는 Excel 통합 문서 프로젝트에서는 프로젝트에서 생성된 Sheetn 개 클래스의 인스턴스에 대해 일부 작업을 수행하는 도우미 메서드가 있을 수도 있습니다.For example, in an Excel Workbook project that targets the .NET Framework 3.5, you might have a helper method that performs some work on instances of the generated Sheetn classes in your project.

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.
}

프로젝트의 대상을 .NET Framework 4.NET Framework 4 이상으로 변경하는 경우 다음 중 하나와 같이 코드를 변경해야 합니다.If you retarget the project to the .NET Framework 4.NET Framework 4 or later, you must make one of the following changes to your code:

  • 프로젝트에서 DoSomethingToSheet 개체의 Base 속성을 전달하도록 WorksheetBase 메서드를 호출하는 코드를 수정합니다.Modify any code that calls the DoSomethingToSheet method to pass the Base property of a WorksheetBase object in your project. 이 속성은 Worksheet 개체를 반환합니다.This property returns a Worksheet object.

    DoSomethingToSheet(Globals.Sheet1.Base)
    
    DoSomethingToSheet(Globals.Sheet1.Base);
    
  • 대신 DoSomethingToSheet 개체를 예상하도록 WorksheetBase 메서드 매개 변수를 수정합니다.Modify the DoSomethingToSheet method parameter to expect a WorksheetBase object instead.

    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.
    }
    

문서에서 Windows Forms 컨트롤을 사용 하는 코드 업데이트Update code that uses Windows Forms controls on documents

또는 네임 스페이스에 대 한 using (c #) 또는 Imports (Visual Basic) 문을 사용 하 여 Microsoft.Office.Tools.Excel Microsoft.Office.Tools.Word 문서 또는 워크시트에 컨트롤을 프로그래밍 방식으로 추가 하는 Windows Forms 컨트롤을 사용 하는 코드 파일의 맨 위에 추가 해야 합니다.You must add a using (C#) or Imports (Visual Basic) statement for the Microsoft.Office.Tools.Excel or Microsoft.Office.Tools.Word namespace to the top of any code file that uses the Controls property to add Windows Forms controls to the document or worksheet programmatically.

.NET Framework 3.5를 대상으로 하는 프로젝트에서 Windows Forms 컨트롤을 추가하는 메서드(예: AddButton 메서드)는 ControlCollectionControlCollection 클래스에서 정의됩니다.In projects that target the .NET Framework 3.5, the methods that add Windows Forms controls (such as the AddButton method) are defined in the ControlCollection and ControlCollection classes.

이상을 대상으로 하는 프로젝트에서 .NET Framework 4.NET Framework 4 이러한 메서드는 Controls 속성에서 사용할 수 있는 확장 메서드입니다.In projects that target the .NET Framework 4.NET Framework 4 or later, these methods are extension methods that are available on the Controls property. 이러한 확장 메서드를 사용하려면 메서드를 사용하는 코드 파일에 Controls 또는 N:Microsoft.Office.Tools.Excel 네임스페이스에 대한 Microsoft.Office.Tools.Excel 또는 Microsoft.Office.Tools.Word 문이 있어야 합니다.To use these extension methods, the code file in which you use the methods must have a using or Imports statement for the Microsoft.Office.Tools.Excel or Microsoft.Office.Tools.Word namespace. 이 문은 .NET Framework 4.NET Framework 4 이상을 대상으로 하는 새 프로젝트에서 자동으로 생성됩니다.This statement is generated automatically in new projects that target the .NET Framework 4.NET Framework 4 or later. 그러나 .NET Framework 3.5를 대상으로 하는 프로젝트에서는 이 문이 자동으로 추가되지 않으므로 프로젝트를 변경할 때 추가해야 합니다.However, this statement is not added automatically in projects that target the .NET Framework 3.5, so you must add it when you retarget the project.

자세한 내용은 런타임에 Office 문서에 컨트롤 추가를 참조 하세요.For more information, see Add controls to Office documents at run time.

Word 콘텐츠 컨트롤 이벤트를 처리 하는 코드 업데이트Update code that handles Word content control events

.NET Framework 3.5를 대상으로 하는 프로젝트에서 Word 콘텐츠 컨트롤의 이벤트는 제네릭 EventHandler<TEventArgs> 대리자에 의해 처리됩니다.In projects that target the .NET Framework 3.5, events of Word content controls are handled by the generic EventHandler<TEventArgs> delegate. .NET Framework 4.NET Framework 4 이상을 대상으로 하는 프로젝트에서는 이러한 이벤트가 다른 대리자에 의해 처리됩니다.In projects that target the .NET Framework 4.NET Framework 4 or later, these events are handled by other delegates.

다음 표에서는 .NET Framework 4.NET Framework 4 이상을 대상으로 하는 프로젝트에서 Word 콘텐츠 컨트롤 이벤트 및 연결된 대리자를 보여 줍니다.The following table lists the Word content control events and the delegates that are associated with them in projects that target the .NET Framework 4.NET Framework 4 or later.

이벤트Event .NET Framework 4.NET Framework 4 이상 프로젝트에서 사용할 대리자Delegate to use in .NET Framework 4.NET Framework 4 and later projects
Added ContentControlAddedEventHandler
ContentUpdating ContentControlContentUpdatingEventHandler
Deleting ContentControlDeletingEventHandler
Entering ContentControlEnteringEventHandler
Exiting ContentControlExitingEventHandler
StoreUpdating ContentControlStoreUpdatingEventHandler

OLEObject 및 OLEControl 클래스를 사용 하는 코드 업데이트Update code that uses the OLEObject and OLEControl classes

.NET Framework 3.5를 대상으로 하는 프로젝트에서는 Microsoft.Office.Tools.Excel.OLEObjectMicrosoft.Office.Tools.Word.OLEControl 클래스를 사용하여 문서 또는 워크시트에 사용자 지정 컨트롤(예: Windows Forms 사용자 정의 컨트롤)을 추가할 수 있습니다.In projects that target the .NET Framework 3.5, you can add custom controls (such as Windows Forms user controls) to a document or worksheet by using the Microsoft.Office.Tools.Excel.OLEObject and Microsoft.Office.Tools.Word.OLEControl classes.

.NET Framework 4.NET Framework 4 이상을 대상으로 하는 프로젝트에서 이러한 클래스는 ControlSiteControlSite 인터페이스로 바뀌었습니다.In projects that target the .NET Framework 4.NET Framework 4 or later, these classes have been replaced by the ControlSite and ControlSite interfaces. ControlSiteControlSite를 대신 참조하도록 Microsoft.Office.Tools.Excel.OLEObjectMicrosoft.Office.Tools.Word.OLEControl를 참조하는 코드를 수정해야 합니다.You must modify code that refers to Microsoft.Office.Tools.Excel.OLEObject and Microsoft.Office.Tools.Word.OLEControl to instead refer to ControlSite and ControlSite. 새 이름을 제외하면 이러한 컨트롤은 .NET Framework 3.5를 대상으로 하는 프로젝트와 동일한 방식으로 동작합니다.Other than the new names, these controls behave the same way that they do in projects that target the .NET Framework 3.5.

자세한 내용은 런타임에 Office 문서에 컨트롤 추가를 참조 하세요.For more information, see Add controls to Office documents at run time.

Controls (Object) 속성을 사용 하는 코드 업데이트Update code that uses the Controls.Item(Object) property

.NET Framework 3.5를 대상으로 하는 프로젝트에서 Microsoft.Office.Tools.Word.Document의 Item (개체) 속성을 사용할 수 있습니다. Microsoft.Office.Tools.Excel.Worksheet.Controls 문서나 워크시트에 지정 된 컨트롤이 있는지 여부를 확인 하는 컨트롤 또는 컬렉션입니다.In projects that target the .NET Framework 3.5, you can use the Item(Object) property of the Microsoft.Office.Tools.Word.Document.Controls or Microsoft.Office.Tools.Excel.Worksheet.Controls collection to determine whether a document or worksheet has a specified control.

이상을 대상으로 하는 프로젝트에서는 .NET Framework 4.NET Framework 4 이러한 컬렉션에서 Item (Object) 속성이 제거 되었습니다.In projects that target the .NET Framework 4.NET Framework 4 or later, the Item(Object) property has been removed from these collections. 문서 또는 워크시트에 지정 된 컨트롤이 포함 되어 있는지 여부를 확인 하려면 또는 컬렉션의 Contains (System.object) 메서드를 Controls Controls 대신 사용 합니다.To determine whether a document or worksheet contains a specified control, use the Contains(System.Object) method of the Controls or Controls collection instead.

문서 및 워크시트의 컨트롤 컬렉션에 대 한 자세한 내용은 런타임에 Office 문서에 컨트롤 추가를 참조 하세요.For more information about the Controls collection of documents and worksheets, see Add controls to Office documents at run time.

CollectionBase에서 파생 되는 컬렉션을 사용 하는 코드 업데이트Update code that uses collections that derive from CollectionBase

.NET Framework 3.5를 대상으로 하는 프로젝트에서는의 여러 컬렉션 형식이 Microsoft Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime 클래스에서 파생 CollectionBase 됩니다 (예: Microsoft.Office.Tools.SmartTagCollection , Microsoft.Office.Tools.Excel.ControlCollection 및) Microsoft.Office.Tools.Word.ControlCollection .In projects that target the .NET Framework 3.5, several collection types in the Microsoft Visual Studio Tools for Office RuntimeVisual Studio Tools for Office runtime derive from the CollectionBase class, such as Microsoft.Office.Tools.SmartTagCollection, Microsoft.Office.Tools.Excel.ControlCollection, and Microsoft.Office.Tools.Word.ControlCollection.

.NET Framework 4.NET Framework 4 이상을 대상으로 하는 프로젝트에서 이러한 컬렉션 형식은 이제 CollectionBase에서 파생되지 않는 인터페이스입니다.In projects that target the .NET Framework 4.NET Framework 4 or later, these collection types are now interfaces that do not derive from CollectionBase. Capacity, ListInnerList와 같은 일부 멤버는 이러한 컬렉션 형식에서 더 이상 사용할 수 없습니다.Some members are no longer available on these collection types, such as Capacity, List, and InnerList.

참고 항목See also