Civil 3D .NET Core 開発の既知の問題

.NET への移行後の Subassembly Composer の問題

Subassembly Composer (SAC)における .NET の重大な影響は、Windows Workflow Foundation アセンブリのサポート中止です。これらはアプリケーションのコア エンジンに不可欠です。Civil 3D の SAC サブアセンブリの継続的な機能を確保するため、次のハイブリッドソリューションが実装されています。
  • CoreWF: PKT ファイルがコリドーを構築する際には、Workflow Foundation ランタイムのオープン ソース ポートが使用されます。
  • PKT Design: PKT ファイルの作成は、.NET Framework を使用して継続されます。Workflow Foundation の UI コンポーネントには、.NET パッケージまたは移植はありません。

さらに複雑なことに、CoreWF は .NET に移植する際に変更され、特に Roslyn では Visual Basic スクリプトのサポートが限られています。.NET Framework では、VB スクリプトのコンパイルは迅速ですが、.NET では、スクリプトから実行可能な式を生成するのにかなり時間がかかります。

参考として、Civil 3D 2025 の既知の問題をここにまとめています。
  • ワークフローの実行時間が以前より遅くなりました。これは、初めてサブアセンブリを作成する場合や、コリドーに最初に適用された測点を作成する場合など、ワークフローの最初の実行にのみ影響します。緩やかなコリドーの場合、緩やかなコリドーの全体の再構築時間が改善されます。なお、開いている図面の時間には影響はありません。具体的には、移行はツール スペースのロード時間に影響しません。
  • Roslyn には、VB スクリプトのコンパイルに関するより厳格なルールがあります。設計者が警告を表示せず、サブアセンブリのプレビューを表示しても、Civil 3D では実行できない場合があります。たとえば、ワークフローに次のような条件式が含まれている場合です:
    AP1.X >=1.0_
    and AP1.Y >=2.0_

Roslyn は末尾「 _ 」の後にさらにテキストがあることを期待し、それが無効であると判断します。この問題を修正しましたが、さらに未発見の不一致ケースが存在する可能性があります。障害を発見した場合は、必ずワークフローを見直し、無効なスクリプトの可能性を特定するか、PKT ファイルを弊社に渡して詳細な診断を受けてください。

プラグインによる起動時とランタイムのクラッシュ/例外

プラグインのすべてのクラッシュ/例外がこの問題に起因するわけではありませんが、プラグイン フォルダ下のサブフォルダにある PackageContents.xml ファイルが適切に設定されているかを確認するとよいでしょう。

確認すべき場所は次のとおりです。
  • C:\ProgramData\Autodesk\ApplicationPlugins
  • %APPDATA%\Autodesk\ApplicationPlugins
  • C:\Program Files\Autodesk\ApplicationPlugins
  • C:\Program Files (x86)\Autodesk\ApplicationPlugins

Civil 3D 2025 プラグインの場合、SeriesMinSeriesMax の両方を 「R25.0」に、Platform を「Civil3D 」に設定し、Civil 3D 2025 でのみ読み込まれるようにしてください。詳細は、「AutoCAD 2024 Developer および ObjectARX ヘルプ|ランタイム要件要素リファレンス」を参照してください。

Microsoft.AspNetCore.App へのフレームワーク参照がないため、プラグインのロードに失敗する

Civil 3D は Microsoft.AspNetCore.App に依存しないため、この参照は追加されていません。プラグインに依存関係がある場合、プラグインの実行ができなくなる可能性があります。

解決策: Civil 3D のルート フォルダにある acdbmgd.runtimeconfig.json ファイルを編集し、Microsoft.AspNetCore.App への参照を追加します。スクリプトまたはインストーラを使用してプラグインを追加する場合は、重複を避けるために、追加する前にユーザまたは他のプラグインがすでにそれを含めているかどうかを確認するロジックを組み込みます。また、「dotnet --list-runtimes」コマンドを使用して、目的のバージョンが Civil 3D にインストールされていることを確認してください。そうでない場合は、プラグインのインストーラにフレームワークのインストーラを含めることを検討してください。

{
  "runtimeOptions": {
    "tfm": "net8.0",
    "frameworks": [
      {
        "name": "Microsoft.NETCore.App",
        "version": "8.0.0"
      },
      {
        "name": "Microsoft.WindowsDesktop.App",
        "version": "8.0.0"
      },
      {
        "name": "Microsoft.AspNetCore.App",
        "version": "8.0.0"
      }
    ],
    "configProperties": {
      "Switch.System.Windows.Controls.ItemsControlDoesNotSupportAutomation": true,
      "System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
      "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": true
    }
  }
}