1

アウト ビルド サーバー (TeamCity) のソリューションに nuget パッケージをインストールして更新するビルド ステップがあります。最近、これにより更新が正しく行われなくなりました。これを調査したところ、ナゲットの更新コマンドがソリューション内のすべてのプロジェクトを更新していないことが問題のようであることがわかりました。これをローカル マシンに複製できます。

このコマンドを実行すると:

.nuget\NuGet.exe update Our.Company.sln -Source http:/ourTcServer:8888/guestAuth/app/nuget/v1/FeedService.svc -RepositoryPath packages -verbosity detailed

更新予定の 10 個のプロジェクトのリストを取得します

Found 10 projects with a packages.config file. (
Company.Project1.csproj,
Company.Project2.csproj,
Company.Project3.csproj, 
Company.Project4.csproj, 
Company.Project4.SubProject1.csproj,
Company.Project4.SubProject2.csproj,
Company.Project1.SubProject1.csproj, 
Company.Project1.SubProject2.csproj,
Company.Project2.SubProject1.csproj,         
Company.Project2.SubProject1.FurtherSubProject1.csproj)

ただし、ソリューションには 13 のプロジェクトが含まれており、これらすべてにpackages.configファイルが含まれており、私が知る限り、他のプロジェクトと何ら変わりはありません。プロジェクトは単一のプロジェクトであり、そのサブプロジェクトとプロジェクトのディレクトリ構造はプロジェクト名と一致します (したがって、project1.subproject1 は subproject1 が project1 内のフォルダーにあることを意味します)。問題のあるプロジェクトはすべて、次のような特定の名前を持つプロジェクトにあります。

Company.Something.SomethingElse.Routing
Company.Something.SomethingElse.Routing.Tests
Company.Something.SomethingElse.Routing.Tests.Specifications

名前のルーティング部分が問題を引き起こす場合 (Resourcesパッケージ名の末尾に単語を使用する前に問題がありました)

すべて同じビルド構成と手順を使用する 50 以上のソリューションがあり、それらすべてで正常に機能します。このソリューションは、正しく更新されていない唯一のソリューションのようです。

なぜこれが当てはまるのか誰にもわかりますか?または、ソリューション内のパッケージを検索するコードが何をしているかを知っている人はいますか? または、この問題を追跡するのに役立つものはありますか?

4

2 に答える 2

1

問題は、一部のプロジェクトの名前を変更したため、.csproj ファイルが古い未使用のプロジェクト ファイルに削除されておらず、nuget には参照を更新するプロジェクト ファイルを見つけるコードが含まれていることでした。更新されたパッケージ。これは、packages.config と同じディレクトリにある .csproj (または使用している任意のプロジェクト ファイル フレーバー) であるすべてのファイルを見つけることによって行われます。これが正確に1つのファイルにならない場合、例外がスローされ、その後キャッチされて無視され、何もログに記録されないため、賢明ではありません.

うまくいけば、これは将来誰かを助けるでしょう。多分私。

于 2015-11-09T16:43:59.737 に答える