5

私はASP.NET Core Web APIプロジェクトと.Net Core Libraryプロジェクトを持っています。 Web APIには、ライブラリプロジェクトへの参照がtarget : projectとしてあります。図書館プロジェクトの名称はTransformationsです。以下
は、ビルドサーバー上でプロジェクト 'XXXXXX'にロックファイルがありません。新しいロックファイルを生成するには "dotnet restore"を実行してください

ウェブAPI用project.json

"dependencies": { 
    "Microsoft.NETCore.App": { 
    "version": "1.0.0", 
    "type": "platform" 
    }, 
    "Microsoft.ApplicationInsights.AspNetCore": "1.0.0", 
    "Microsoft.AspNetCore.Mvc": "1.0.0", 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0", 
    "Microsoft.Extensions.Configuration.FileExtensions": "1.0.0", 
    "Microsoft.Extensions.Configuration.Json": "1.0.0", 
    "Microsoft.Extensions.Logging": "1.0.0", 
    "Microsoft.Extensions.Logging.Console": "1.0.0", 
    "Microsoft.Extensions.Logging.Debug": "1.0.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0", 
    "Transformations": { 
      "target": "project" 
    }, 
    "Microsoft.Extensions.DependencyInjection": "1.0.0", 
    "Serilog.Extensions.Logging": "1.3.0-dev-10125", 
    "Serilog.Sinks.RollingFile": "3.0.0", 
    "Serilog.Settings.Configuration": "2.1.0", 
    "Microsoft.AspNetCore.Diagnostics": "1.0.0" 
}, 

ライブラリプロジェクトのproject.json

{ 
    "version": "1.0.0-*", 

    "dependencies": { 
    "NETStandard.Library": "1.6.0", 
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0" 
    }, 

    "frameworks": { 
    "netstandard1.6": { 
     "imports": "dnxcore50" 
    } 
    }, 
    "configurations": { 
    "Production": {}, 
    "Staging": {} 
    } 
} 

プロジェクトの両方のためにproject.jsonです以下はApi &変換プロジェクトのプロジェクト構造です。私は、次のコマンドを

D:\Jenkins\MyJenkinsProject\workspace\src\MySolution\Api>dotnet restore 

を実行し、その後

D:\Jenkins\MyJenkinsProject\workspace\src\MySolution\Api>dotnet build 

構築サーバー上

D:\Jenkins\MyJenkinsProject\workspace\src\MySolution 
                \Api 
                \Transformation 

私はエラープロジェクトの変換がロックファイルを持っていません

を取得します。新しいロックファイルを生成するには "dotnet restore"を実行してください。

次のコマンドを順番に実行すると、すべて正常に動作します。

D:\Jenkins\MyJenkinsProject\workspace\src\MySolution\Transformation>dotnet restore 
    D:\Jenkins\MyJenkinsProject\workspace\src\MySolution\Api>dotnet restore 
    D:\Jenkins\MyJenkinsProject\workspace\src\MySolution\Api>dotnet build 

質問
1>ライブラリはAPIプロジェクトにおけるプロジェクトとして参照されている場合は、なぜ私は、ライブラリプロジェクトのために別途dotnet restoreを実行する必要がありますか?なぜ暗黙にrestoresプロジェクトを参照していないのですか?

+0

@hobbs私は、参照プロジェクトを暗黙のうちに復元しない理由を探しています。私は何かが欠けていますか?メインAPIプロジェクトから複数のライブラリプロジェクトを参照している場合は、最初にすべてのライブラリプロジェクトに対して 'dotnet restore'を実行する必要があります。私はメインプロジェクト(この場合はAPI)を復元するだけでよいはずです。また、私はビルドサーバーでこれをやっています。だから私は新しいライブラリプロジェクトを追加するとき、私はまた、新しいプロジェクトを復元するために私のビルドスクリプトを更新する必要があります。 – LP13

答えて

-2

私はあなたがただdotnet buildを直接行うことができると信じています。自動的にdotnet restoreを実行する必要があります。

+0

いいえ、そうではありません。 – svick

2

From Zlatko Knezevic

この動作は仕様です。 [...]すべてのプロジェクトの依存関係を一括して復元する場合は、dotnet restoreをソリューションのルート(global.jsonファイルがある場所)で実行してください。

関連する問題