コンソールアプリを.NET Framework 4.5とNETCore2.1に両対応させて、NETCore2.1のほうをGlobalToolパッケージ化しました。
プロジェクトファイル(*.csproj)を
projectname.csproj
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<!-- 通常の設定、すべての対応フレームワークを書く -->
<PropertyGroup Condition="'$(GlobalTool)' != true">
<TargetFrameworks>netcoreapp2.1;net45</TargetFrameworks>
</PropertyGroup>
<!-- グローバルツール向けの設定、.NETCore2.1以降のみを書く -->
<PropertyGroup Condition="'$(GlobalTool)' == true">
<PackAsTool>true</PackAsTool>
<TargetFramework>netcoreapp2.1</TargetFramework>
</PropertyGroup>
<PropertyGroup>
<OutputType>Exe</OutputType> <!-- ここ重要。これがないと.NETCoreは実行できない -->
</PropertyGroup>
</Project>
こうするとうまくいきます。
ビルド後イベントにdotnet pack /p:GlobalTool=true -c Release
を入れてみると失敗します。
ビルドしてから、dotnet pack /p:GlobalTool=true -c Release
を実行すると、無事GlobalToolができます。
この対応をしたプロジェクトがこちら
https://github.com/reniris/UI_Generator/tree/ekUIGenMod
そのうち本家にプルリクエスト投げる予定
サンプルプロジェクトを追加しました(2019/4/13)
https://github.com/reniris/GlobalToolSample
参考にしたサイト
.NET Core Global Tools Configuration