LoginSignup
0
0

More than 5 years have passed since last update.

コンソールアプリを.NET Framework 4.5とNETCore2.1に両対応させつつ、GlobalTool化する方法

Last updated at Posted at 2019-04-09

コンソールアプリを.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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0