マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

.NET Core 3.0から、Windows Forms / WPFのサポートが追加された。

詳細

基本的にポーティング移行になるもよう(VS2019ではデザイナ使用不可)。

移行手順の概要

.NET Framework版プロジェクト

.NET Core版のプロジェクト

  • ...のコンパイルを通す。
    • ...へ、NuGetパッケージを追加
    • ...へ、必要に応じて互換機能パックを追加
    • ...その他、非互換のAPIなどの置換などを行う。
  • ...のビルドと実行とテストの実施

支援ツール

デザイナ

アナライザー

互換機能パック

概要

  • Windows 専用 API やプラットフォーム非依存 API など、約 20,000 の API を提供
  • NuGet パッケージ Microsoft.Windows.Compatibility 経由で提供される。
  • .NET Core または .NET Standard を対象とするプロジェクトから参照できる。

領域

  • .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)

事例

Open棟梁Projectでの事例

手順

プロジェクト・ファイルの雛形の取得

新規作成 → プロジェクトで取得できる。

  • Windows Formsの場合
    ...のプロジェクト・ファイルの雛形
    <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
    
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <UseWindowsForms>true</UseWindowsForms>
        <ApplicationIcon />
        <StartupObject />
      </PropertyGroup>
    
    </Project>
  • WPFの場合
    ...のプロジェクト・ファイルの雛形
    <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
    
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>netcoreapp3.0</TargetFramework>
        <UseWPF>true</UseWPF>
      </PropertyGroup>
    
    </Project>

ファイルのリンク

  • 上記のプロジェクト・ファイルにファイルをリンクする。
  • .NET Frameworkのプロジェクト・ファイルと同じフォルダ階層に、
    .NET Coreのプロジェクト・ファイルを配置してしまっても行ける。

ポーティング移行

以下のポイントに注意しながらポーティング移行を行う。

ポイント

共通

  • AssemblyInfo?.csは除外(削除)する。
  • プロジェクト・ファイルを修正する。
    • ルート名前空間
    • アセンブリ名
    • プロジェクト出力
    • 参照設定やNuGet参照
  • ファイル
    • ビルド アクションの設定
    • Resourceファイルの再構成
  • NuGet周り
    • 参照アセンブリ(DLL)吸わなくなったので、個別にNuGet参照。
    • 必要に応じて、NuGetパッケージの依存関係の設定を適正化する。
  • #IF用にNETCOREAPPを追加
    • 既定で、NETCOREAPP_3_0があるのでこちらを利用してもイイ。
    • 必要に応じて、#IF - #ELSEの条件付きコンパイルディレクティブを実装する。

ライブラリの場合

  • OutputType?WinExe?からLibraryへ変更する。
    <OutputType>Library</OutputType>
  • Windows Forms / WPFのサポートの両方に対応する場合、以下を併記
    <UseWindowsForms>true</UseWindowsForms>
    <UseWPF>true</UseWPF>
  • Sgen.exe(XmlSerializer?専用コンパイラ)の問題で、
    GenerateSerializationAssemblies? : Off を追記した。
    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>

画面の場合

設定ファイル

  • app.configを除外(削除)し、appsettings.jsonを追加。
  • Microsoft.Extensions.Configuration.XXX周辺の参照を追加
  • 冒頭で、appsettings.jsonの初期化コードを実行

サポート対象外

ClickOnce

  • .NET Coreでのサポートは予定されていない模様。
  • .NET 5でサポートされる模様。

VB版

現状では、VB版テンプレートが存在しない。

参考

.NET Blog

やってみた系

しばやん雑記

rksoftware

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

移植

互換機能パック


Tags: :.NET開発, :.NET Core, :移行


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-12-17 (木) 19:12:07 (1219d)