2016-08-02 5 views
0

を動作していないが、私はすべての運を持っていませんよ。 (私はまだすべてのことで耳の後ろに濡れているので、簡単なステップや設定をしてください)TFS NuGetインストーラのビルドステップは、私はNuGetパッケージの参照を持つプロジェクトの自動ビルドを設定しようとしている

注:これは私が使っているような他の類似の質問と重複していません中央のパッケージリポジトリ他の同様の質問では、この重要な詳細について言及していないので、関連性がないとみなされるべきです。

ビルドは、参照することなく、細かい実行されます。私はそれをチェックし、ビルドを始めたが、NuGetが最初に私のアプリケーションのbinフォルダにアセンブリをコピーされていなかった

Dim eHandling As Newtonsoft.Json.ConstructorHandling 
eHandling = Newtonsoft.Json.ConstructorHandling.Default 

:私はこの単純な構造物を含むことによって、それにNewtonsoft.Jsonとバインドを追加しました。ただし、ここにコピーしました:

もちろん、依存関係が見つからないため、ビルドに失敗しました。

それは私が私のdevのマシン上で中央のパッケージリポジトリを使用していることは注目に値します:

<config> 
    <add key="repositoryPath" value="D:\Dev\Packages" /> 
</config> 
私も、サーバー上でこの動作をエミュレートしたい

、例えばC:\Packages\*\*.nupkg

私は標準%AppData%\NuGet\NuGet.configファイルを使用してみましたが、ビルドはそれを無視します。私は(そこに示されているようrepositoryPath代わりのpackageSourcesを使用して)this answerにアドバイスを試してみましたが、私はVSO Agentサービスを再起動するまで、そのサーバがハングします。アクセス許可の問題である可能性があると考えて、%AppData%の場所に関連付けられたユーザーアカウントでエージェントが実行されるように再構成しました。NuGet.configです。まだ運がありません。ビルドしない。

ビルドステップを実行する前にNuGetにサーバー上のセントラルパッケージリポジトリをダウンロードして入力してから、適切な依存関係をアプリケーションbinフォルダにコピーするにはどうすればよいですか?

EDIT 1

アップデート:どうやら何かの作業、私は今、サーバー上のC:\Packages\Newtonsoft.Json.9.0.1のフォルダを持っているよう。ただし、アセンブリをビルドする前にアプリケーションbinフォルダにコピーされていません。同じ結果。ビルドに失敗しました。

EDIT 2

OK、私が近づいています。私はサーバー上にD:ドライブを作成し、ローカルrepositoryPathの値をD:\Dev\Packagesに設定しました。これは私の開発マシンと同じです。ビルドはまだ失敗していますが、プロジェクトXMLを簡単に見てみると、次のようになります。

<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL"> 
    <HintPath>..\..\..\Packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> 
    <Private>True</Private> 
</Reference> 

この相対パスはどのように処理するのですか?それはそれを修正する必要があります、はい?働い

EDIT 3

OK、。プロジェクトを編集して

D:\Dev\Packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll 

に変更しました。これでビルドに成功しました。

しかし、これは本当に退屈な本当の高速を得るつもりです。確かに、すべての単一のプロジェクト、過去と現在と未来のNuGetリファレンスごとにこれを行う必要はありません...私は?

答えて

1

OK、それを得ました。

サーバ上のrepositoryPathフォルダが、ビルドエージェントがプロジェクトファイルを置くフォルダと同じ深さの深さであれば、私たちはどこにでも置くことができます。プロジェクトファイルの相対値HintPathです。

D:\Dev\Packages 
D:\Dev\Git\app.repo\App\App.vbproj 

は素晴らしい作品:

は例えば、私の場合、私は私のdevのマシン上でローカルのGitリポジトリの階層的位置を一致させるために、C:\Agent\Build\Packagesにサーバーの場所を設定することになりました。

EDIT

だけ明確にする、アプリケーションbinフォルダにパッケージフォルダからアセンブリをコピーする行為はNuGetのアクションではありません。これはMsBuildアクション(プロジェクトのアセンブリ参照プロパティのCopyLocal設定)です。

失敗した理由は、プロジェクトファイルで指定された相対参照に従って、MsBuildがコピーするアセンブリを見つけることができなかったためです。

技術的には私の質問のタイトルが正しくありません。 NuGetインストーラの手順は、すべてうまくいっています。

関連する問題