0. はじめに
2019年9月にリリースされた、C# 8.0、そして.NET Core 3.0に移行するには? という話しです。
1. C# 8.0
1.1 C# 8.0 とは、なんぞや
みんなおなじみ、++C++; // 未確認飛行 Cにある、C# 8.0 の新機能が詳しいです。
私のようなライトなユーザーは、
- null 許容参照型
- using 変数宣言
- null 合体代入 (??=)
は使うかもしれないです。
1.2 有効にするには
今までのProjectで有効にするには、.csproj
を編集する必要があります。
が、VisualStudioは賢いので、
usinginti;
などとcodeに書くと、IntelliSenseが「C#8.0を有効にする?」と聞いてくるので、それに従えば.csproj
を編集してくれます。
1.3 .NET Core 3.0は必須じゃないの?
全機能を使おうとすると、.NET Core 3.0もしくは.NET Standard 2.1が必要です。
しかし、機能は限定されますが、.NET Frameworkでも使えます。
詳しくは、C# 8.0 の新機能 : ターゲットフレームワークをご覧ください。
1.4 Nullableをenableにしたいのですが・・・
Project全体でNullableを有効にするには.csproj
に指定する必要があります。
しかし、古い形式の.csproj
では、どうしてもIntelliSenseの警告が消えませんでした。(何か勘違いしているっぽい挙動をする)
そこで、Projectを最新形式に書き換える必要がありました。
参考までに、私のProjectを示します。
<ProjectSdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Library</OutputType><TargetFramework>net472</TargetFramework><RootNamespace>InvAddIn</RootNamespace><LangVersion>8.0</LangVersion><Nullable>enable</Nullable></PropertyGroup><PropertyGroupCondition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'"><PlatformTarget>x64</PlatformTarget></PropertyGroup><PropertyGroupCondition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'"><PlatformTarget>x64</PlatformTarget></PropertyGroup><PropertyGroup><GenerateAssemblyInfo>false</GenerateAssemblyInfo></PropertyGroup><ItemGroup><ReferenceInclude="Autodesk.Inventor.Interop"><HintPath>..\..\..\..\..\..\Windows\Microsoft.NET\assembly\GAC_MSIL\Autodesk.Inventor.Interop\v4.0_23.0.0.0__d84147f8b4276564\Autodesk.Inventor.Interop.dll</HintPath></Reference><ReferenceInclude="stdole"><HintPath>..\..\..\..\..\..\Windows\assembly\GAC\stdole\7.0.3300.0__b03f5f7f11d50a3a\stdole.dll</HintPath></Reference><ReferenceInclude="System.Windows.Forms"/></ItemGroup><TargetName="PostBuild"AfterTargets="PostBuildEvent"><ExecCommand="call "%25vsappiddir%25..\..\Common7\Tools\VsDevCmd.bat"
call mt.exe -manifest "$(ProjectDir)$(TargetName).X.manifest" -outputresource:"$(TargetPath)";#2
XCopy "$(TargetPath)" "%25AppData%25\Autodesk\ApplicationPlugins\$(TargetName)\" /Y /R
XCopy "$(ProjectDir)Autodesk.$(TargetName).Inventor.addin" "%25AppData%25\Autodesk\ApplicationPlugins\$(TargetName)\" /Y /R 

if exist "$(TargetDir)ja\$(TargetName).resources.dll" (

mkdir "%25AppData%25\Autodesk\ApplicationPlugins\$(TargetName)\ja"
XCopy "$(TargetDir)ja" "%25AppData%25\Autodesk\ApplicationPlugins\$(TargetName)\ja\" /S /Y /R
) else (
echo ***jaリソースが存在しません。
)
"/></Target></Project>
3. .NET Core 3.0
3.1 .Net Core 3.0 とは、なんぞや?
.NETは幾つかの系列に分裂しています。.NET Frameworkも、その1つの流れです。
分裂していると不便だよね、ということで大統一がなされたのが、.NET Core 3.0です。
.NET Frameworkは現状の4.8をもって最後となるようで、以後は.NET Coreが更新される予定です。
3.2 .NET Core 3.0とAddIn開発
現時点(2019/11/26, Inventor 2020)では、.NET Core 3.0用に作られたAddInは、Inventorで動作しません。
Autodeskがサポートするまで、.NET Frameworkを使い続けるほか在りません。