UbuntuのDockerでWeb APIをホストすることを目標に、Ubuntu 14.04で.NET Core 1.1.0を実行しています。 Ubuntuでパッケージをビルドしたいのですが、NuGet参照の一部は内部のNuGetリポジトリ(Artifactory)でホストされています。これは、パッケージソースを追加した後、Windows上のVS2015で正常に動作しますが、実行すると:
dotnet restore
ubuntuでは、パブリックNuGetリポジトリでホストされているパッケージは正常にダウンロードされますが、Artifactoryのパッケージは失敗します。
error: Unable to resolve 'Mercury.BaseModel (>= 1.1.0)' for '.NETCoreApp,Version=v1.1'.
\home\<user>\.nuget\NuGet\NuGet.Config
でNuGet構成ファイルを見つけ、次のようにArtifactoryリポジトリを追加しました。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="Artifactory-DEV" value="https://theluggage-agct.gray.net/artifactory/api/nuget/nuget-institutional-development-local" protocolVersion="3"/>
</packageSources>
</configuration>
しかし、私はまだ同じエラーを受け取っています。
.NET Core SDKをインストールした後、NuGet自体は機能しません。前述のdotnet restore
を使用しています-dotnet CLIで編集する必要がある同様の構成(NuGetを使用している必要がありますか)または他に必要なものがありますか?する?
ありがとう!
結局、私が見逃した2つの問題をすばやく特定しました。
Sudo -i
は、問題を解決しようとしてrootとして実行します。その結果、\ homeフォルダーでセットアップしたNuGet構成が選択されませんでした。自分のログオンに戻ると、エラーが発生しました。
error: Unable to load the service index for source https://theluggage-agct.gray.net/artifactory/api/nuget/nuget-institutional-development-local.
error: The content at 'https://theluggage-agct.gray.net/artifactory/api/nuget/nuget-institutional-development-local' is not a valid JSON object.
error: Unexpected character encountered while parsing value: <. Path '', line 0, position 0.
Artifactory NuGetリポジトリがNuGet v2に準拠したXMLを返すことがわかりました。リポジトリをv2として設定するように構成ファイルを変更しましたが、現在は機能しています。そのため、上から、ファイルを編集します
\home\<user>\.nuget\NuGet\NuGet.Config
新しいレポジトリURLを追加し、バージョン設定を正しく取得します。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
<add key="Artifactory-DEV" value="https://theluggage-agct.gray.net/artifactory/api/nuget/nuget-institutional-development-local" protocolVersion="2"/>
</packageSources>
</configuration>
Dotnet CLIの復元では、ソースフィードのURLとして-sを使用できます。したがって、nuget.orgへのリモートリポジトリを備えたArtifactoryがある場合。
dotnet restore -s https://artifactory.example.com/api/nuget/nuget.org
参照 :