2016-04-17 14 views
6

私は新しい.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でクラスライブラリを構築する正しい方法は?本当にランタイムは問題ですか?もしそうなら、私たちはそれにどのように対処しますか?

+2

'emitEntryPoint'をfalseに設定しようとしましたか? –

+0

また、 'dotnet new -t lib'でライブラリを作成しようとしましたか? [コンソールタイプはデフォルトです。](https://github.com/dotnet/cli/tree/rel/1.0。0/src/dotnet/commands/dotnet-new) –

+0

提案のおかげで@mikez、それは実際に動作します。これを 'false'に設定すると、1つのエントリポイントの要件で問題が解決されます。私はこの 'dotnet new -t lib'を試しましたが、うまくいきません。 C#の利用可能な型はただのコンソールであると述べています。 – user1620696

答えて

2

この2つの問題は、​​とdependenciesセクションです。

クラスライブラリはエントリポイント(static void Main()メソッド)を持たないため、emitEntryPointをfalseに設定する必要があります。

依存関係については、あなたが必要な依存関係をターゲットにするか、具体的

"dependencies" : { 
    "System.Console": "4.0.0-*" 
} 

またはNETStandard.Library NuGetパッケージ

"dependencies" : { 
    "NETStandard.Library": "1.5.0-*" 
} 

NETStandard.Libraryパッケージは、まだそれほどNuGetからは使用できません正式にリリースされるまでMyGetをターゲットにする必要があります。あなたのプロジェクトフォルダ内のNuGet.configファイルに以下をドロップしてください。

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <packageSources> 
    <clear /> 
    <add key="AspNetCI" value="https://www.myget.org/F/aspnetcirelease/api/v3/index.json" /> 
    <add key="NuGet.org" value="https://api.nuget.org/v3/index.json" /> 
    </packageSources> 
</configuration> 
関連する問題