私は新しい.NET CLIを試してきましたが、コンソールやWebアプリケーションを作成するのはかなり簡単ですが、クラスライブラリを構築する方法は明白ではありません。.NET CLIを使用したクラスライブラリ
私は次のようにしました。通常通り、コマンドラインでdotnet new
を使用してproject.json
ファイルを作成しました。私はこのプロジェクトでシンプルなクラスをコーディングしました。
次に、project.json
の依存関係として最初のものを含む.NET CLIを使用してコンソールアプリケーションを作成し、クラスライブラリで構築したクラスを使用して画面にメッセージを表示しました。
コンソールアプリケーションを実行しようとすると、もう一方のプロジェクトが見つかり、.NET CLIがそのアプリケーションを構築しようとしました。クラスライブラリのビルドに失敗しました:
プログラムには、エントリポイントに適した静的な「メイン」メソッドが含まれていません。
この場合、プロジェクトをコンソールアプリケーションとして扱い、メインエントリポイントを見つけようとしていました。
{
"version": "1.0.0-*",
"compilationOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-*"
}
},
"frameworks": {
"netcoreapp1.0": {}
}
}
を、私はこれには2つの理由があるかもしれないと考えているが探している相手:それらのいずれかの事実
私はdotnet new
コマンドでクラスライブラリを作成したとき、それはproject.json
を生成しているため、次のようにこれが起こったと考えていますランタイムはMicrosoft.NETCore.App
で、TFMは2番目です。
TFMをnetstandard1.5
に変更しようとしましたが、同じエラーが発生して動作しませんでした。その場合、問題はランタイムにあると私は信じています。どういうわけか私はMicrosoft.NETCore.App
によれば、ライブラリではなくコンソールアプリを構築していることを意味し、1つのエントリポイントが必要であると考えています。
.NET Core CLIでクラスライブラリを構築する正しい方法は?本当にランタイムは問題ですか?もしそうなら、私たちはそれにどのように対処しますか?
'emitEntryPoint'をfalseに設定しようとしましたか? –
また、 'dotnet new -t lib'でライブラリを作成しようとしましたか? [コンソールタイプはデフォルトです。](https://github.com/dotnet/cli/tree/rel/1.0。0/src/dotnet/commands/dotnet-new) –
提案のおかげで@mikez、それは実際に動作します。これを 'false'に設定すると、1つのエントリポイントの要件で問題が解決されます。私はこの 'dotnet new -t lib'を試しましたが、うまくいきません。 C#の利用可能な型はただのコンソールであると述べています。 – user1620696