5

NuGet.Serverパッケージを使用していくつかのローカルパッケージリポジトリを正常にセットアップし、ローカルIISWebサーバーでホストしました。パッケージマネージャーから接続して問題なくインストールできます。したがって、これらは正常に機能しています。

パッケージフォルダーをチェックインする必要がないように、NuGet参照を含む各プロジェクトファイルに次のコマンドラインを含めました。これは、NuGet.exeがCIビルドエージェントのパスにある場合に機能します。

ただし、すべてのプロジェクトファイルのコマンドラインからソース構成を移動し、1つの場所、できれば他の厄介な開発者が変更できない場所に配置したいと思います;)

<Target Name="BeforeBuild">
    <Exec Command="nuget install $(ProjectDir)packages.config -s 
       http://domain:80/DataServices/Packages.svc/;
        http://domain:81/DataServices/Packages.svc/ 
       -o $(SolutionDir)packages" />
</Target>

もっと良い方法はありますか?

4

2 に答える 2

13

はいあります;-) NuGetPowerToolsを見てください。Install-Package NuGetPowerToolsを実行すると、nuget.exe、nuget msbuildターゲット、および設定(チェックインする必要があります)を含む.nugetフォルダーが$(SolutionDir)に追加されます。

その後、Enable-PackageRestoreを実行するだけで、msbuildターゲットがVisual Studioプロジェクトファイルに設定されます。これにより、ビルドサーバー上でも、パッケージをチェックインせずに、ビルド前の手順でパッケージがフェッチされるようになります。(ただし、.nugetフォルダーをチェックインすることを忘れないでください!)。

このように、各プロジェクトではなく、ソリューションの中心となるnuget msbuild設定ファイル(.nugetフォルダー内)でnugetパッケージソースを管理するだけです。

乾杯、ザビエル

于 2011-09-22T17:38:20.337 に答える
5

http://blog.davidebbo.comのdigitaltrustからのアドバイスを受けて、ようやくNuGetPowerToolsをインストールするようになりました。

NuGetPowerToolsは私の問題を解決しましたが、それは私が望んでいたことにはやり過ぎでした。ソリューションルートに作成される.nugetフォルダーをバージョン管理するためにチェックインする必要があります。このフォルダーには、NuGet.exeといくつかのターゲットファイルが含まれています。バージョン管理はツールではなくソースコード用だと思うので、これは好きではありません。

私は次の解決策を思いついた。

  1. NuGet.exeを、開発マシンと継続的インテグレーションマシンの両方で、ローカルドライブ上のフォルダーに保存します。C:\ tools \nuget\を選択しました
  2. そのファイルパスをすべての環境のパス環境変数に追加します
  3. 継続的インテグレーションマシンで、%APPDATA%\ NuGet \ NuGet.Configを見つけて、次のように入力します

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
    <packageSources>
        <add key="LocalRepositoryName" value="http://Domain/DataServices/Packages.svc/" /> 
    </packageSources> 
    

    packageSourcesに複数のエントリを追加すると、NuGetは表示された順序でそれらを検索します

  4. 私の質問のビルド後のコードは、次のように修正できます。

    <Target Name="BeforeBuild">
        <Exec Command="nuget install $(ProjectDir)packages.config 
        -o $(SolutionDir)packages" />
    </Target>
    

この結果、承認されたリポジトリの場所が変更されるたびに、すべてのcsprojファイルではなく、1か所で構成を変更する必要があります。また、コマンドライン呼び出しの開発者ではなく、その場所を決定するのは継続的インテグレーションサーバーの管理者です。

于 2011-09-28T11:18:32.563 に答える