48

Teamcity (インターネットの仮想マシンで実行) を使用して Nuget サーバーを作成し、パッケージを公開するビルドを作成しました。

そのパッケージを使用する必要がある別のプロジェクトもあります。このプロジェクトは teamcity にも基づいています。ローカルの Visual Studio に nuget フィード URI を追加し、パッケージをインストールすると、すべて正常に動作しました。しかし、teamcity でビルドしようとすると、「パッケージが見つかりません」と表示されます。

私の質問は、「カスタム nuget フィードを TeamCity ビルドに追加する方法は?」です。

4

3 に答える 3

49

NuGet パッケージ ソースは Visual Studio を介して構成されますが、ユーザーごとの構成ファイルに保存されますc:\Users\$USER\AppData\Roaming\NuGet\NuGet.config。TeamCity パッケージ ソースのエントリは、ビルドを実行しているビルド エージェント ユーザーの構成ファイルに追加する必要があります。

  1. ローカル マシンで、ユーザーの Nuget.config ファイルを開きます。
  2. TeamCity パッケージ ソースのエントリをクリップボードにコピーします。
  3. ビルド エージェントで、TeamCity ビルドを実行しているユーザーの NuGet.config ファイルを開きます
  4. TeamCity パッケージ ソース エントリに貼り付けます。保存して終了します。
  5. ビルドを再度実行します。これで、パッケージを見つけることができるはずです。

編集: ladenedge は、私が最初にこの質問に答えたときには存在しなかった優れたソリューションを文書化しています。このソリューションは、ビルド エージェントへの管理者アクセス権がない場合や、プロジェクトごとにパッケージ ソースを構成したい場合に特に役立ちます。

于 2013-01-27T14:53:46.320 に答える
27

NuGet は、重複する質問の回答NuGet.targetsで説明されているように、ソース自体に保存されているファイルからソースを読み取ることができるようになりました。

<ItemGroup Condition=" '$(PackageSources)' == '' ">
    <!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
    <!-- The official NuGet package source (https://nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
    <PackageSource Include="https://nuget.org/api/v2/" />
    <PackageSource Include="https://my-nuget-source/nuget/" />
</ItemGroup>
于 2013-07-29T15:29:34.127 に答える
23

これはビルド インフラストラクチャの一部であり、アプリケーション コードの一部ではないため、ソース コードのNuGet.configにフィードを追加したくありませんでした。

また、TeamCity ビルド エージェントのNuGet.configにフィードを追加したくありませんでした。これは、メンテナンス (更新、追加、削除) が難しく、ビルド エージェントが多数あるためです。

私にとって最も効果的だったのは、グローバル nuget フィードとカスタム (セミコロン区切り) の両方を含む TeamCity (ルート プロジェクト上) に%system.PackageSources%を追加することです。

https://www.nuget.org/api/v2/ ; http://<teamcity_server_name>:81/guestAuth/app/nuget/v1/FeedService.svc

NuGet.Targetsを見ると、定義されている場合は $(PackageSources) を使用していることがわかります。したがって、TeamCity で「システム」パラメーターとして定義すると、ビルド プロセスに渡されます。

于 2016-02-19T20:20:17.010 に答える