.NET 5 및 .NET Core 3.1에 대한 새로운 지원 도입 > 블로그 & Tips

본문 바로가기

Spread.NET

블로그 & Tips

.NET 5 및 .NET Core 3.1에 대한 새로운 지원 도입

페이지 정보

작성자 GrapeCity 작성일 21-01-27 09:06 조회 2,405회 댓글 0건

본문

GrapeCity Spread.NET v14에는 현재 NuGet에서 사용 가능한 .NET Core 3.1.NET 5 Windows Forms용 새 컨트롤이 포함되어 있습니다.


이 컨트롤에서는 지원되는 모든 플랫폼에서 사용할 수 있도록 .NET 4.5.2도 지원합니다. Spread. NET v14에는 동일한 API를 사용하는 새로운 전체 프레임워크 컨트롤이 포함되어 있습니다. 전체 디자인 타임 지원으로 전체 프레임워크 컨트롤을 사용해 새 프로젝트를 생성하고, 동일한 소스를 사용해 .NET Core 또는 .NET 5에 대한 병렬 프로젝트를 생성하여 코드의 이식성을 가정하고 새 컨트롤에 대해 빌드할 수 있습니다.


Microsoft Portability Analyzer 도구를 사용해 새 플랫폼에 대한 코드의 이식성을 확인하십시오.


.NET Core 3.1.NET 5 Windows Forms를 위한 새로운 Spread. NET v14 컨트롤에서는 전체 프레임워크 Spread. NET 14 Windows Forms 컨트롤과 같은 Visual Studio의 디자인 타임을 지원하지 않는다는 점에 유의하십시오.Spread Designer 도구를 사용해 스프레드시트를 디자인하는 것과 같이 Visual Studio에서 Spread. NET 14의 전체 디자인 타임 기능 집합을 사용하고 싶을 때는 개발용 전체 프레임워크 컨트롤을 사용하는 것이 좋습니다.


솔루션에서 .NET Core 3.1 또는 .NET 5에 대해 유사한 프로젝트를 생성하고 이러한 대상에 동일한 소스를 빌드할 수 있습니다.



프로젝트를 .NET Core 3.1 및 .NET 5로 이식 


Spread. NET 13 Windows Forms(또는 이전 버전)를 사용하는 기존 프로젝트를 이식하여 새로운 Spread. NET 14 Windows Forms NuGet 패키지 컨트롤을 사용함으로써 .NET Core 3.1 또는 .NET 5를 대상으로 지정하는 방법을 설명하기 위해 다음과 같이 데모 샘플 프로젝트 중 하나인 연간 재무 보고서를 사용하겠습니다.


.NET 5 및 .NET Core 3.1에 대한 새로운 지원 도입

그림 1 연간 재무 보고서 데모 샘플


이 데모 샘플은 C#과 VB. NET 모두를 위한 제품에 설치됩니다.

Samples\C#\Spread.Examples\GrapeCity.AnnualFinancialReport\GrapeCity.AnnualFinancialReport.sln의 설치 폴더에 있는 C# 솔루션을 중점적으로 설명하고 다음과 같이 Microsoft Visual Studio Enterprise 2019 미리 보기(버전 16.8.0 미리 보기 4.0)을 사용하겠습니다.


.NET 5 및 .NET Core 3.1에 대한 새로운 지원 도입

그림 2 GrapeCity.AnnualFinancialReport.sln


이 샘플과 같이 둘 이상의 프로젝트와 프로젝트 의존성을 포함하는 솔루션은 세부적인 사항부터 처리해야 합니다. 의존성이 없는 종속 프로젝트부터 처리한 후 이 프로젝트에 의존하는 프로젝트를 처리하십시오.


bin 및 obj 폴더와의 충돌을 방지하기 위해 연결된 .NET 전체 프레임워크 프로젝트를 포함하는 폴더 아래에 있는 새 하위 폴더에 netcore3.1 프로젝트를 새로 만드십시오.



1단계: 새로운 netcore3.1 프로젝트용 폴더 만들기


다음과 같이 새 폴더를 만듭니다(Windows 탐색기 사용).

  • Samples\C#\Common\Spread.Common.DataStore\netcore

  • Samples\C#\Common\Spread.Common.Features\netcore

  • Samples\C#\Spread.Examples\GrapeCity.AnnualFinancialReport\netcore

이러한 새 폴더는 다음에 만들 새로운 netcore3.1 프로젝트 파일의 저장 위치에 놓이게 됩니다.



2단계: Spread.Common.DataStore.Core 프로젝트 만들기


이 단계에서는 Samples\C#\Common\Spread.Common.DataStore 폴더로 이동하여 메모장(또는 다른 텍스트 편집기)에서 이식되는 Spread.Common.DataStore.csproj를 엽니다. 이 작업은 다음 단계에서 새 프로젝트 파일에 복사할 때 유용합니다.


다음과 같이 메모장 또는 다른 텍스트 편집기를 사용하여 새 파일을 만들고 새로운 Spread.Common.DataStore.Core 프로젝트에 이 기준선 내용을 붙여넣으십시오.


Spread.Common.DataStore.Core.csproj
​
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
  <TargetFrameworks>netcoreapp3.1;net5.0-windows</TargetFraneworks>
  <UseWindowsForms>true</UseWindowsForms>
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  <AssemblyName>Spread.Common.DataStore.Core</AssemblyName>
  <RootNamespace>Spread.Common.DataStore</RootNamespace>
</PropertyGroup>
</Project>


그런 다음, 원본 프로젝트에 포함된 모든 파일과 리소스를 추가하십시오.


소스 및 리소스 파일(< Compile Include=... > 또는 < Content Include=... >를 포함하는 < ItemGroup >)이 포함된 Spread.Common.DataStore.csproj 내부의 블록을 찾아 새 프로젝트에 복사하십시오.


붙여넣은 각 소스 경로의 앞에 ..\를 삽입하여 소스 파일에 상대적인 새로운 프로젝트 파일 위치의 파일 경로를 수정하십시오.


Spread.Common.DataStore.Core.csproj 
​
<Project Sdk="Microsoft.NET.Sdk"> 
<PropertyGroup> 
  <TargetFrameworks>netcoreapp3.1;net5.0-windows</TargetFrameworks> 
  <UseWindowsForms>true</UseWindowsForms> 
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo> 
  <AssemblyName>Spread.Common.DataStore.Core</AssemblyName> 
  <RootNamespace>Spread.Common.DataStore</RootNamespace> 
</PropertyGroup> 
<ItemGroup> 
  <Compile Include="..\DataSourceEntities\COGSDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\DashBoardDataSource.cs" /> 
  <Compile Include="..\DataService.cs" /> 
  <Compile Include="..\DataSourceEntities\FinancialKPIDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\IncomeStatementDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\JsonDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\KPIDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\AccessDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\OrderEntryDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\StudentCalendarDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\StudentDashboardDataSource.cs" /> 
  <Compile Include="..\GCVersion35.cs" /> 
  <Compile Include="..\Model\AbsenceSchedule.cs" /> 
  <Compile Include="..\Model\AbsentRecord.cs" /> 
  <Compile Include="..\Model\BusinessExpense.cs" /> 
  <Compile Include="..\Model\BusinessRevenue.cs" /> 
  <Compile Include="..\Model\BusinessStat.cs" /> 
  <Compile Include="..\Model\COGS.cs" /> 
  <Compile Include="..\Model\Company.cs" /> 
  <Compile Include="..\Model\Customer.cs" /> 
  <Compile Include="..\Model\CustomerTarget.cs" /> 
  <Compile Include="..\Model\DashBoardItems.cs" /> 
  <Compile Include="..\Model\Employee.cs" /> 
  <Compile Include="..\Model\FinancialKPI.cs" /> 
  <Compile Include="..\Model\Interfaces\IStudentRecord.cs" /> 
  <Compile Include="..\Model\Interfaces\IDateTime.cs" /> 
  <Compile Include="..\Model\Invoice.cs" /> 
  <Compile Include="..\Model\InvoiceParts.cs" /> 
  <Compile Include="..\Model\InvoiceServices.cs" /> 
  <Compile Include="..\Model\KPIList.cs" /> 
  <Compile Include="..\Model\LastSomeMatchStatus.cs" /> 
  <Compile Include="..\Model\MarketSale.cs" /> 
  <Compile Include="..\Model\Match.cs" /> 
  <Compile Include="..\Model\MatchPointTable.cs" /> 
  <Compile Include="..\Model\MovieRecord.cs" /> 
  <Compile Include="..\Model\Parts.cs" /> 
  <Compile Include="..\Model\Product.cs" /> 
  <Compile Include="..\Model\Region.cs" /> 
  <Compile Include="..\Model\Sale.cs" /> 
  <Compile Include="..\Model\ScoreRecord.cs" /> 
  <Compile Include="..\Model\Student.cs" /> 
  <Compile Include="..\Model\StudentSchedule.cs" /> 
  <Compile Include="..\Model\TardyRecord.cs" /> 
  <Compile Include="..\Model\Team.cs" /> 
  <Compile Include="..\Model\TermSession.cs" /> 
  <Compile Include="..\Model\Vehicle.cs" /> 
  <Compile Include="..\Properties\AssemblyInfo.cs" /> 
  <Compile Include="..\Utilities\FileUtilities.cs" /> 
</ItemGroup> 
<ItemGroup> 
  <Content Include="..\Data\AbsenceSchedule.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\AbsentRecords.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\AgingReportCustomers.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\AgingReportInvoices.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\BusinessStats.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Companies.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Customers.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\CustomerTarget.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\DashBoardCustomers.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\DashBoardInvoices.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\DashBoardTargetMaster.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Employee.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\movie_data.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\FinancialKPIList.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\FinancialTargetMaster.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Invoice.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\InvoiceParts.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\InvoiceServices.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\KPIList.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\MarketSales.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\MatchCurrentYear.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\MatchFourthLastYear.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\MatchLastYear.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\MatchSecondLastYear.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\MatchThirdLastYear.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Parts.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Products.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Regions.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Sales.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\ScoreRecords.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Students.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\TardyRecords.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\TargetMaster.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Team.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\TermSessions.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Vehicle.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Resources\GrapeCity.thmx"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  </ItemGroup> 
  <ItemGroup> 
  <Content Include="..\Data\fpnorthwinds.mdb"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\fpWine.mdb"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Nwind.mdb"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Patients2000.mdb"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content>



3단계: 양식 리소스 추가


양식용 리소스 파일은 이전 csprojvbproj 프로젝트 형식에 대해 자동으로 포함됩니다.


프로젝트에 양식이 포함된 경우 다음과 같이 < Project >< /Project > 안에 각 양식의 리소스를 추가하십시오.


Form Resource Example
<EmbeddedResource Include=*..\Form.resx*>
<DependentUpon>Form.cs</DependentUpon>
</EmbeddedResource>


새 프로젝트에서 명시적으로 참조되지 않는 resx 파일을 프로젝트 파일에서 검색하여 위에 표시된 연결된 양식에 대해 각 resxcs를 추가합니다.


이 예시에서는 프로젝트에 추가할 resx 양식이 없지만, 여러분의 프로젝트에는 해당되는 resx 파일이 포함되어 있을 수 있습니다.


그렇지 않은 경우 9단계로 이동하여 프로젝트를 실행하려 할 때 오류가 발생할 수 있습니다.

이 경우 대개는 적절한 프로젝트에서 누락된 리소스를 추가하여 문제를 해결할 수 있습니다.


파일을 Samples\C#\Common\Spread.Commom.DataStore\netcore\Spread.Common.DataStore.Core.csproj로 저장하십시오.


참고: 또한 v14를 사용하는 Spread. NET WinForms(v13 이전)의 이전 릴리스를 사용하여 적용된 디자인 타임 변경 사항을 저장함으로써 컨트롤 직렬화에 사용되는 몇 가지 클래스를 업데이트해야 합니다. 전에는 .NET Framework 이전 버전에서 직렬화할 수 있었던 몇 가지 클래스를 이제 .NET 5에서는 직렬화할 수 없습니다. 이 프로세스는 이전 릴리스를 사용해 저장된 모든 Spread XML 파일에도 필수적입니다. XML 파일 형식은 이제 사용되지 않으므로 교환 가능한 플래그가 있는 XLSX 형식을 사용하는 것이 좋습니다.



4단계: Spread.Common.Features.Core 프로젝트 만들기


다음과 같이 2~3단계를 반복하여 Spread.Common.Features.Core라는 새 프로젝트를 만들고, Samples\C#\Common\Spread.Common.Features\Spread.Common.Features.csproj를 사용해 소스와 이 템플릿을 복사하여 초기의 빈 프로젝트 파일을 만드십시오.


Spread.Common.Features.Core.csproj 
​
<Project Sdk="Microsoft.NET.Sdk"> 
<PropertyGroup> 
  <TargetFrameworks>netcoreapp3.1;net5.0-windows</TargetFrameworks> 
  <UseWindowsForms>true</UseWindowsForms> 
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo> 
  <AssemblyName>Spread.Common.Features.Core</AssemblyName> 
  <RootNamespace>Spread.Common.Features</RootNamespace> 
</PropertyGroup> 
</Project>


다음과 같이 Samples\C#\Common\Spread.Common.Features\Spread.Common.Features.csproj에서 소스 및 리소스 파일(< Compile Include=... > 또는 < Content Include=... >를 포함하는 < ItemGroup >)을 복사하십시오.


Spread.Common.Features.Core.csproj
​
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> 
<PropertyGroup> 
  <TargetFrameworks>netcoreapp3.1;net5.0-windows</TargetFrameworks> 
  <UseWindowsForms>true</UseWindowsForms> 
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo> 
  <AssemblyName>Spread.Common.Features.Core</AssemblyName> 
  <RootNamespace>Spread.Common.Features</RootNamespace> 
</PropertyGroup> 
<ItemGroup> 
  <Compile Include="..\DataSourceEntities\COGSDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\DashBoardDataSource.cs" /> 
  <Compile Include="..\DataService.cs" /> 
  <Compile Include="..\DataSourceEntities\FinancialKPIDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\IncomeStatementDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\JsonDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\KPIDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\AccessDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\OrderEntryDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\StudentCalendarDataSource.cs" /> 
  <Compile Include="..\DataSourceEntities\StudentDashboardDataSource.cs" /> 
  <Compile Include="..\GCVersion35.cs" /> 
  <Compile Include="..\Model\AbsenceSchedule.cs" /> 
  <Compile Include="..\Model\AbsentRecord.cs" /> 
  <Compile Include="..\Model\BusinessExpense.cs" /> 
  <Compile Include="..\Model\BusinessRevenue.cs" /> 
  <Compile Include="..\Model\BusinessStat.cs" /> 
  <Compile Include="..\Model\COGS.cs" /> 
  <Compile Include="..\Model\Company.cs" /> 
  <Compile Include="..\Model\Customer.cs" /> 
  <Compile Include="..\Model\CustomerTarget.cs" /> 
  <Compile Include="..\Model\DashBoardItems.cs" /> 
  <Compile Include="..\Model\Employee.cs" /> 
  <Compile Include="..\Model\FinancialKPI.cs" /> 
  <Compile Include="..\Model\Interfaces\IStudentRecord.cs" /> 
  <Compile Include="..\Model\Interfaces\IDateTime.cs" /> 
  <Compile Include="..\Model\Invoice.cs" /> 
  <Compile Include="..\Model\InvoiceParts.cs" /> 
  <Compile Include="..\Model\InvoiceServices.cs" /> 
  <Compile Include="..\Model\KPIList.cs" /> 
  <Compile Include="..\Model\LastSomeMatchStatus.cs" /> 
  <Compile Include="..\Model\MarketSale.cs" /> 
  <Compile Include="..\Model\Match.cs" /> 
  <Compile Include="..\Model\MatchPointTable.cs" /> 
  <Compile Include="..\Model\MovieRecord.cs" /> 
  <Compile Include="..\Model\Parts.cs" /> 
  <Compile Include="..\Model\Product.cs" /> 
  <Compile Include="..\Model\Region.cs" /> 
  <Compile Include="..\Model\Sale.cs" /> 
  <Compile Include="..\Model\ScoreRecord.cs" /> 
  <Compile Include="..\Model\Student.cs" /> 
  <Compile Include="..\Model\StudentSchedule.cs" /> 
  <Compile Include="..\Model\TardyRecord.cs" /> 
  <Compile Include="..\Model\Team.cs" /> 
  <Compile Include="..\Model\TermSession.cs" /> 
  <Compile Include="..\Model\Vehicle.cs" /> 
  <Compile Include="..\Properties\AssemblyInfo.cs" /> 
  <Compile Include="..\Utilities\FileUtilities.cs" /> 
</ItemGroup> 
<ItemGroup> 
  <Content Include="..\Data\AbsenceSchedule.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\AbsentRecords.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\AgingReportCustomers.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\AgingReportInvoices.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\BusinessStats.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Companies.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Customers.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\CustomerTarget.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\DashBoardCustomers.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\DashBoardInvoices.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\DashBoardTargetMaster.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Employee.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\movie_data.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> <
  Content Include="..\Data\FinancialKPIList.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\FinancialTargetMaster.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Invoice.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\InvoiceParts.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\InvoiceServices.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\KPIList.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\MarketSales.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\MatchCurrentYear.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\MatchFourthLastYear.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\MatchLastYear.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\MatchSecondLastYear.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\MatchThirdLastYear.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Parts.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Products.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Sales.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\ScoreRecords.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Students.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\TardyRecords.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\TargetMaster.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Team.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\TermSessions.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Vehicle.json"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Resources\GrapeCity.thmx"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
</ItemGroup> 
<ItemGroup> 
  <Content Include="..\Data\fpnorthwinds.mdb"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\fpWine.mdb"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Nwind.mdb"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\Patients2000.mdb"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
  <Content Include="..\Data\receivables.mdb"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
  </Content> 
</ItemGroup> 
</Project>


파일을 Samples\C#\Common\Spread.Common.Features\netcore\Spread.Common.Features.Core.csproj로 저장하십시오.



5단계: GrapeCity.AnnualFinancialReport.Core 프로젝트 만들기


다음과 같이 2~3단계를 반복하여 GrapeCity.AnnualFinancialReport.Core,라는 새 프로젝트를 만들고, Samples\C#\Examples\GrapeCity. AnnualFinancialReport\GrapeCity.AnnualFinancialReport.csproj를 사용해 소스와 이 템플릿을 복사하여 초기의 빈 프로젝트 파일을 만드십시오.


GrapeCity.AnnuaFinancialReportCore.csproj  
​
<Project Sdk="Microsoft.NET.Sdk"> 
<PropertyGroup> 
  <OutputType>WinExe</OutputType> 
  <TargetFrameworks>netcoreapp3.1;net5.0-windows</TargetFrameworks> 
  <UseWindowsForms>true</UseWindowsForms> 
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo> 
  <AssemblyName>GrapeCity.AnnualFinancialReport.Core</AssemblyName> <RootNamespace>GrapeCity.AnnualFinancialReport</RootNamespace> 
</PropertyGroup> 
</Project>


그런 다음, 아래와 같이 Samples\C#\Examples\Grape City.AnnualFinancialReport\GrapeCity.AnnualFinancialReport.csproj에서 소스 및 리소스 파일(< Compile Include=... > 또는 < Content Include=... >를 포함하는 < ItemGroup >)을 복사하십시오.


GrapeCity.AnnualFinancialReport.Core.csproj 
​
<Project Sdk="Microsoft.NET.Sdk"> 
<PropertyGroup> 
  <OutputType>WinExe</OutputType> 
  <TargetFrameworks>netcoreapp3.1;net5.0-windows</TargetFrameworks> 
  <UseWindowsForms>true</UseWindowsForms> 
  <GenerateAssemblyInfo>false</GenerateAssemblyInfo> 
  <AssemblyName>GrapeCity.AnnualFinancialReport.Core</AssemblyName> <RootNamespace>GrapeCity.AnnualFinancialReport</RootNamespace> 
</PropertyGroup> 
<ItemGroup> 
  <Compile Include="..\AnnualFinancialReport.cs"> 
    <SubType>UserControl</SubType> 
  </Compile> 
  <Compile Include="..\AnnualFinancialReport.Designer.cs"> 
    <DependentUpon>AnnualFinancialReport.cs</DependentUpon> 
  </Compile> 
  <Compile Include="..\Form1.cs"> 
    <SubType>Form</SubType> 
  </Compile> 
  <Compile Include="..\Form1.Designer.cs"> 
    <DependentUpon>Form1.cs</DependentUpon> 
  </Compile> 
  <Compile Include="..\Program.cs" /> 
  <Compile Include="..\Properties\AssemblyInfo.cs" /> 
  <EmbeddedResource Include="..\AnnualFinancialReport.resx"> 
    <DependentUpon>AnnualFinancialReport.cs</DependentUpon> 
  </EmbeddedResource> 
  <EmbeddedResource Include="..\Properties\licenses.licx" /> 
  <EmbeddedResource Include="..\Properties\Resources.resx"> 
    <Generator>ResXFileCodeGenerator</Generator> 
    <LastGenOutput>Resources.Designer.cs</LastGenOutput> 
    <SubType>Designer</SubType> 
  </EmbeddedResource> 
  <Compile Include="..\Properties\Resources.Designer.cs"> 
    <AutoGen>True</AutoGen> 
    <DependentUpon>Resources.resx</DependentUpon> 
    <DesignTime>True</DesignTime> 
  </Compile> 
  <None Include="..\Properties\app.manifest" /> 
  <None Include="..\Properties\Settings.settings"> 
    <Generator>SettingsSingleFileGenerator</Generator> 
    <LastGenOutput>Settings.Designer.cs</LastGenOutput> 
  </None> 
  <Compile Include="..\Properties\Settings.Designer.cs"> 
    <AutoGen>True</AutoGen> 
    <DependentUpon>Settings.settings</DependentUpon> 
    <DesignTimeSharedInput>True</DesignTimeSharedInput> 
  </Compile>
  <None Include="..\Resources\AnnualFinancialReport.xlsx" /> 
  <None Include="..\Resources\ExcelCompatibility.imp" /> 
</ItemGroup> 
</Project>


파일을 Samples\C#\Examples\GrapeCity.AnnualFinancialReport\netcore\GrapeCity.AnnualFinancialReport.Core.csproj로 저장하십시오.



6단계: GrapeCity.AnnualFinancialReport.sln에서 새 프로젝트 추가


netcore라는 솔루션에서 새 폴더를 만듭니다. 다음과 같이 이 폴더 아래에서 각각의 새 프로젝트를 솔루션에 추가합니다.


.NET 5 및 .NET Core 3.1에 대한 새로운 지원 도입

그림 3 솔루션에 새 프로젝트 추가



7단계: 새 프로젝트 참조 추가


Spread.Common.DataStore.Core 프로젝트에는 몇 가지 패키지 참조가 필요합니다.


이러한 참조를 추가하려면 Solution Explorer에서 이 프로젝트를 확장하고 Dependencies 노드를 마우스 오른쪽 버튼으로 클릭합니다.


NuGet 패키지 관리...를 선택하여 NuGet 패키지 관리자를 연 다음, "시험판 포함" 체크박스를 선택하고 찾아보기 탭을 사용해 Newtonsoft.JsonSystem.Data.OleDb 패키지를 검색합니다.


nuget.org에서 각 최신 버전을 설치합니다. 설치됨 탭의 모양은 다음과 같습니다.


.NET 5 및 .NET Core 3.1에 대한 새로운 지원 도입

그림 4 NuGet에서 Newtonsoft.JsonSystem.Data.OleDb 패키지를 Spread.Common.DataStore.Core에 추가


GrapeCity.AnnualFinancialReport.Core 프로젝트에는 Spread.Common.DataStore.CoreSpread.Common.Features.Core와 같은 다른 프로젝트가 모두 필요합니다.


다음과 같이 프로젝트 참조 추가...를 사용해 이러한 프로젝트에 참조를 추가하십시오.

.NET 5 및 .NET Core 3.1에 대한 새로운 지원 도입

그림 5 GrapeCity.AnnualFinancialReport.CoreSpread.Common.DataStore.CoreSpread.Common.Features.Core 프로젝트를 참조합니다.


다음과 같이 NuGet 패키지 관리자를 사용하여 GrapeCity.Spread.WinForms에 대한 참조를 추가하십시오.

.NET 5 및 .NET Core 3.1에 대한 새로운 지원 도입

그림 6 Nuget에서 GrapeCity.Spread.WinForms 패키지를 GrapeCity.AnnualFinancialReport.Core에 추가



8단계: 프로젝트 폴더를 구성하고 원본 프로젝트 구조를 미러링


마지막 단계에는 새 프로젝트의 모든 프로젝트 소스 및 리소스 파일 링크를 구성하여 원본 프로젝트의 체계 및 구조(모든 프로젝트 폴더 및 하위 폴더 포함)와 일치시키는 작업이 포함됩니다.


GrapeCity.Common.DataStore 프로젝트에는 새로운 GrapeCity.Common.DataStore.Core 프로젝트 내에 만들어야 하는 소스 및 리소스 파일(Properties, Data, DataSourceEntities, Model 등)을 구성하는 다수의 하위 폴더가 있습니다. 각 파일 링크를 적절한 폴더로 이동하여 원본 프로젝트의 체계와 일치시켜야 합니다.


프로젝트를 마우스 오른쪽 버튼으로 클릭하고 새 폴더 추가를 사용해 폴더를 만든 후, 소스 및 리소스 파일 링크를 적절한 위치로 끌어서 놓습니다. 그러면 다음과 같은 모습이 됩니다.


.NET 5 및 .NET Core 3.1에 대한 새로운 지원 도입

그림 7 구성된 Spread.Common.DataStore.Core


GrapeCity.Common.Features 프로젝트에는 다수의 하위 폴더도 있으므로 유사한 체계가 필요합니다.


위 단계에 따라 GrapeCity.Common.Features.Core를 만들고 GrapeCity.Common.Features의 구조를 미러링합니다. 그러면 다음과 같은 모습이 됩니다.


.NET 5 및 .NET Core 3.1에 대한 새로운 지원 도입

그림 8 구성된 Spread.Common.Features.Core


GrapeCity.AnnualFinancialReport 프로젝트에는 PropertiesResources라는 두 가지 하위 폴더만 있으므로 구성하기가 더 쉽습니다. 그러면 다음과 같은 모습이 됩니다.


.NET 5 및 .NET Core 3.1에 대한 새로운 지원 도입

그림 9 구성된 GrapeCity.AnnualFinancialReport.Core



9단계: 빌드 및 실행


이제 새로운 netcoreapp3.1 프로젝트를 빌드하여 실행할 준비가 되었습니다.

GrapeCity.AnnualFinancialReport.Core 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 시작 프로젝트로 설정을 선택합니다.

다음과 같이 F5 키를 눌러 디버깅을 시작하면 프로젝트가 문제 없이 시작됩니다.


.NET 5 및 .NET Core 3.1에 대한 새로운 지원 도입

그림 10 실행 중인 GrapeCity.AnnualFinancialReport.Core


오류가 발생하는 경우 3단계에서 추가해야 하는 새로운 csproj 또는 vbproj에 포함되지 않은 양식과 연결된 resx 파일이 누락되었을 수 있습니다.



VB 프로젝트를 .NET Core 3.1 및 .NET 5로 이식


vbproj 대신 csproj 파일 형식을 사용하고, 때로 다른 폴더 이름(예: Properties 대신에 My Project)을 사용하는 경우를 제외하고는 VB 프로젝트 이식은 동일하게 작동합니다.

그렇지 않으면 동일한 단계가 적용됩니다. 아래에 연결된 샘플 프로젝트에는 참조용 C#VB가 모두 포함되어 있습니다.


디자인 타임 사용

디자인 타임은 새로운 플랫폼 컨트롤에 대해서는 아직 원활하게 지원되지 않고 있으므로 디자인 타임용 전체 프레임워크 버전과 전체 프레임워크 프로젝트를 계속 사용하십시오. Spread DesignerProperties 창은 기존 csprojvbproj 프로젝트 형식을 사용하는 디자인 타임에서 모든 기본 제공 형식 변환기 및 형식 편집기와 함께 개발자에게 제공됩니다. 모든 변경 사항은 이러한 프로젝트의 .NET 5.NET Core 3.1 빌드에 자동으로 적용됩니다.



이식된 .NET Core 3.1 및 .NET 5 샘플


ZIP 파일을 추출한 후 솔루션 파일(SLN)의 위치는 다음과 같습니다. Spread.Examples\GrapeCity.AnnualFinancialReport\GrapeCity.AnnualFinancialReport.sln.

  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기

태그

인기글

더보기
  • 인기 게시물이 없습니다.
그레이프시티 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@grapecity.com | 전화 : 1670-0583 | 경기도 안양시 동안구 시민대로 230, B-703(관양동, 아크로타워) 그레이프시티(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 Copyright ⓒ 2022 GrapeCity inc.