Revit 2025 は、.NET 8 をベースに再構築されております。そのため、Revit 2025 のアドイン開発においても、これまでの .NET Framework ではなく、.NET 8 をターゲットフレームワークに指定する必要があります。
また、過去バージョンの Revit (.NET Framework4.x ベース)向けに開発されたアドインプロジェクトを Revit 2025 に移植する際、.NET 8 へ移行して再ビルドする必要があります。
今回は、既存の .NET Framework 4.x ベースのプロジェクトを .NET 8 へアップグレードする手順について、ご案内いたします。
Visual Studio 2022 と .NET 8 の入手
.NET 8 コードをビルドするには、Visual Studio 2022 (17.8 以降)が必要です。また、.NET 8 も必要に応じて、インストールする必要がございます。
※Revit 2025 のビルドには、.NET SDK 8.0.100 が使用されています。
※Revit 2025 をインストールすると、.NET 8 Windows Desktop Runtime x64 8.0.0.33101 も併せてインストールされます。
.NET アップグレード アシスタントの入手
Visual Studio プロジェクトを .NET 8 ベースに移行するには、Microsoft が提供している「.NET アップグレード アシスタント」を利用することが出来ます。
.NET アップグレード アシスタントの入手ととインストールについては、.NET アップグレード アシスタントをインストールする方法 で説明されています。
.NET アップグレード アシスタントがサポートするプロジェクトは、C# と VB のみです。
なお、一部、.NET 8 へ移行出来ない(コードの移植/改変が必要)なものも存在します。それらの概要は、次の記事で紹介されていますので、プロジェクトのアップグレード前に一読されることをお勧めします。
- .NET Framework から .NET 6 に移植する - .NET Core | Microsoft Learn
- 破壊的変更 - .NET Framework から .NET Core | Microsoft Learn
アップグレード手順
- C# プロジェクトを新しい SDK スタイルのプロジェクト形式に変換
- ターゲット フレームワークの更新
- .csproj 内の <TargetFrameworkVersion> を目的のターゲット フレームワーク バージョンに更新します
(例: <TargetFramework>net8.0-windows</TargetFramework>)。 - WPF アプリケーションの場合
CSPROJ に <TargetFramework>net8.0-windows</TargetFramework> と <UseWPF>true</UseWPF> を追加します。 - Windows フォームを使用するアプリケーションの場合
CSPROJ に <TargetFramework>net8.0-windows</TargetFramework> と <UseWindowsForms>true</UseWindowsForms> を追加します。
- .csproj 内の <TargetFrameworkVersion> を目的のターゲット フレームワーク バージョンに更新します
- システム参照の削除
- システム参照はデフォルトで利用可能なため、CSPROJ から削除できます。
- システム参照はデフォルトで利用可能なため、CSPROJ から削除できます。
- 非互換なパッケージ、ライブラリ参照、非サポートのコードの対応
- アドインを .NET 8 に移行する際、.NET Framework 4.8 で作成したアドインが利用しているライブラリや Nuget パッケージも .NET 8 に移行されている必要があります。
非互換なパッケージ、ライブラリ参照、非サポートのコードを修正してください。
コンポーネントのバージョンに関する注意事項
アドインが、下記のコンポーネントを使用している場合、Revit 2025 で使用されているコンポーネントのバージョンと一致させることで、アドインの不安定になることを回避します。
- CefSharp
- "cef.redist.x64" Version="119.4.3"
- "cef.redist.x86" Version="119.4.3"
- "CefSharp.Wpf.HwndHost" Version="119.4.30"
- "CefSharp.Common.NetCore" Version="119.4.30"
- "CefSharp.Wpf.NetCore" Version="119.1.20"
- Newtonsoft Json
- "Newtonsoft.Json" Version="13.0.1"
一般的な問題への対処法
- MSB3277 ビルド警告
- RevitAPI.dll、RevitUIAPI.dll を参照するコードのビルド時
-
対処:Windowsデスクトップ・フレームワークへの参照を追加:
<ItemGroup>
<FrameworkReference Include="Microsoft.WindowsDesktop.App" />
</ItemGroup>
- CA1416 ビルド警告
- Windows システム機能のみを使用する場合
- 対処1:AssemblyInfo.cs に次の行を追加:
[assembly:System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")] - 対処2:プロジェクトファイルに下記を設定してリビルド
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
- Windows システム機能のみを使用する場合
By Ryuji Ogasawara
コメント
コメントフィードを購読すればディスカッションを追いかけることができます。