「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>移行・マイグレーション]] --[[.NETのクロスプラットフォーム対応]] ---[[.NET Coreへの移行]] * 目次 [#f905cdb3] #contents *概要 [#r21e6d40] [[.NET Core 3.0>.NET Core#n8fed7fd]]から、[[Windows Forms]] / [[WPF]]のサポートが追加された。 *詳細 [#a4d1d0de] 基本的にポーティング以降になるもよう(VS2019ではデザイナ使用不可)。 **移行手順の概要 [#fc210d78] ***.NET Framework版プロジェクト [#fb8a1c0c] -...の準備(既存) -...の[[移行性評価>#ze1f947c]] ***.NET Core版のプロジェクト [#g90fdf7f] -...の準備(新規) --...の生成 --...の設定 --...から、[[.NET Framework版プロジェクト>#fb8a1c0c]]のソース・ファイルをリンクする。 -...のコンパイルを通す。 --...へ、NuGetパッケージを追加 --...へ、必要に応じて[[互換機能パック>#teace4f7]]を追加 --...その他、非互換のAPIなどの置換などを行う。 -...のビルドと実行とテストの実施 **支援ツール [#ae9d6ea8] ***デザイナ [#f16529b3] -VS2019では、 --[[.NET Core]]のデザイナは提供されない。 --[[.NET Framework]]のデザイナを使用する。 ***[[アナライザー>.NETのクロスプラットフォーム対応#we621859]] [#ze1f947c] **互換機能パック [#teace4f7] ***概要 [#h046eaaf] -Windows 専用 API やプラットフォーム非依存 API など、約 20,000 の API を提供 -NuGet パッケージ Microsoft.Windows.Compatibility 経由で提供される。 -.NET Core または .NET Standard を対象とするプロジェクトから参照できる。 ***領域 [#baa44687] -.NET Framework --CodeDom --System.Runtime.Caching --Windows Workflow Foundation (WF) --Windows Communication Foundation (WCF) --Managed Extensibility Framework (MEF) --互換性(Microsoft.Windows.Compatibility.Shims) -Windows --Codepage --GDI+ --ODBC --Registry --Service --暗号化 --EventLog --アクセス制御リスト (ACL) --パフォーマンス カウンター --WMI (Windows Management Instrumentation) --Active Directory(X.500) *事例 [#s598e6d3] [[Open棟梁Project>https://github.com/OpenTouryoProject/]]での事例 -Support to Windows Forms/WPF~ by “Windows Desktop Packs” on NET Core 3.0.~ · Issue #328 · OpenTouryoProject/OpenTouryo~ https://github.com/OpenTouryoProject/OpenTouryo/issues/328 **プロジェクト・ファイルの雛形 [#y87cfc73] 新規作成 → プロジェクトで取得。 ***[[Windows Forms]] [#x6d33c84] <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <UseWindowsForms>true</UseWindowsForms> <ApplicationIcon /> <StartupObject /> </PropertyGroup> </Project> ***[[WPF]] [#n237b65d] <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>netcoreapp3.0</TargetFramework> <UseWPF>true</UseWPF> </PropertyGroup> </Project> **ポイント [#vaf46f10] ***共通 [#pe9fcde5] -AssemblyInfo.csは除外(削除)する。 -#IF用にNETCOREAPPを追加 -プロジェクト・ファイルを修正する。 --ルート名前空間 --アセンブリ名 --プロジェクト出力 --参照設定やNuGet参照 --ファイル ---ビルド アクションの設定 ---Resourceファイルの再構成 -NuGet周り --参照アセンブリ(DLL)吸わなくなったので、個別にNuGet参照。 --必要に応じて、NuGetパッケージの依存関係の設定を適正化する。 ***ライブラリの場合 [#d06d49a0] -OutputTypeをWinExeからLibraryへ変更する。 <OutputType>Library</OutputType> -[[Windows Forms]] / [[WPF]]のサポートの両方に対応する場合、以下を併記 <UseWindowsForms>true</UseWindowsForms> <UseWPF>true</UseWPF> -Sgen.exe(XmlSerializer専用コンパイラ)の問題で、~ GenerateSerializationAssemblies : Off を追記した。 <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies> ***画面の場合 [#p5a96d54] -設定ファイル --app.configを除外(削除)し、appsettings.jsonを追加。 --Microsoft.Extensions.Configuration.XXX周辺の参照を追加 --冒頭で、appsettings.jsonの初期化コードを実行 *参考 [#y6bdd61a] -MicrosoftがWPF、WinForms、WinUIをオープンソース化~ https://www.infoq.com/jp/news/2018/12/msft-open-source-wpf-winforms -.NET Core 3 で Windows デスクトップアプリケーションをサポートするみたい~ (.NET Core 3 and Support for Windows Desktop Applications) - いろいろ備忘録日記~ https://devlights.hatenablog.com/entry/2018/05/08/120953 -Windows Compatibility Pack for .NET Core:Dev Basics/Keyword - @IT~ https://www.atmarkit.co.jp/ait/articles/1711/21/news024.html **.NET Blog [#l73f6b34] -.NET Core 3 and Support for Windows Desktop Applications~ https://devblogs.microsoft.com/dotnet/net-core-3-and-support-for-windows-desktop-applications/ -Announcing .NET Core 3 Preview 1 and Open Sourcing Windows Desktop Frameworks~ https://devblogs.microsoft.com/dotnet/announcing-net-core-3-preview-1-and-open-sourcing-windows-desktop-frameworks/ **やってみた系 [#ae742ebe] -WPF on .NET Coreをやってみる(プレビュー版) - Qiita~ https://qiita.com/soi/items/e1cf2abf9845164bf439 -.NET Core 3.0 でのデスクトップ開発 - かずきのBlog@hatena~ https://blog.okazuki.jp/entry/2018/12/05/160649 -.NET Core3.0でWindows Forms/WPFが~ サポートされたので早速試してみた - あるSEのつぶやき・改~ https://www.aruse.net/entry/2018/12/05/100935 -Visual Studio 2019で始める「WPF on .NET Core 3.0」開発~ というタイトルで登壇してきました - nuits.jp blog~ http://www.nuits.jp/entry/wpf-on-dot-net-core-3_0 --https://www.slideshare.net/AtsushiNakamura4/visual-studio-2019wpf-on-net-core-30 ***しばやん雑記 [#h70a43fe] -既存の WPF アプリケーションを .NET Core 3.0 に移行した~ https://blog.shibayan.jp/entry/20190302/1551518606 -.NET Core 3.0 Preview 7 で Go Live が付いたので~ WPF アプリケーションを更に対応させた~ https://blog.shibayan.jp/entry/20190725/1564045069 -.NET Core 3.0 で WinForms / WPFを~ 使う場合は実行ファイルのパスに注意~ https://blog.shibayan.jp/entry/20190909/1568007641 ***rksoftware [#c1c62ab9] -.NET Core 3.0 でデスクトップアプリを作る (目次)~ https://rksoftware.hatenablog.com/entry/2019/01/10/203234 --.NET Core 3.0 でデスクトップアプリを作る(VS プレビュー版を使わない) --.NET Core 3.0 プロジェクトの発行でエラーになる --.NET Core 3.0 デスクトップアプリプロジェクトが ---Visual Studio 2019 で開けない ---ビルドできない --デザイナがなくても問題なし ---.NET Core 3.0 で Windows フォームアプリケーションを作る ---Windows フォーム手書き時の注意 AutoScaleDimensions 設定 --帳票出力 ---.NET Core デスクトップアプリケーションから DioDocs を使って帳票を PDF 出力する ---.NET Core デスクトップアプリケーションで PDF 帳票を画面表示する ---.NET Core デスクトップアプリケーションで DioDocs で作った PDF 帳票を印刷する **Microsoft Docs [#r95fbc4a] ***移植 [#i790bd74] -Windows Forms アプリを .NET Core 3.0 に移植する~ https://docs.microsoft.com/ja-jp/dotnet/core/porting/winforms -WPF アプリを .NET Core 3.0 に移植する~ https://docs.microsoft.com/ja-jp/dotnet/core/porting/wpf ***互換機能パック [#b570f8e1] -Windows 互換機能パックを使用してコードを .NET Core に移植する - .NET Core~ https://docs.microsoft.com/ja-jp/dotnet/core/porting/windows-compat-pack --designs/compat-pack.md at master · dotnet/designs~ https://docs.microsoft.com/ja-jp/dotnet/core/porting/windows-compat-pack ---- Tags: [[:.NET開発]], [[:.NET Core]], [[:移行]]