最近、NuGet を使用して外部パッケージを管理し始めました。今のところ、NLog にのみ必要です。VS 2012 でプロジェクトをビルドすると、すべて正常に動作します。ただし、TeamCity を CI サーバーとして試しています (CI は初めてです)。次のエラーが表示されます。
[Csc] SomeNamespace\SomeClass.cs(10, 7): error CS0246:
The type or namespace name 'NLog' could not be found
(are you missing a using directive or an assembly reference?)
(このエラーは、NLog を使用するすべての場所で繰り返されます)
SVN に「packages/」フォルダーを含めませんでした。これは、バイナリを含めず、TeamCity の MSBuild にこれらを独自にダウンロードさせるのが良い方法だと考えたからです。しかし、それは明らかにそうしていません。私はSVNに「packages.xml」ファイルを含めます。何が問題なのかを確認するには、何を確認できますか?
更新 @DavidBrabant のおかげで、正しい方向に進むことができました。ただし、TeamCity で次のエラーが発生するようになりました。
Package restore is disabled by default. To give consent, open the Visual Studio Options dialog,
click on Package Manager node and check 'Allow NuGet to download missing packages during build.'
ただし、私は Visual Studio ではなく TeamCity にいるので、「同意」を true に設定する方法がわかりません! NuGet.targets ファイルで RestorePackages を「true」に設定しようとしました。
<RestorePackages Condition=" '$(RestorePackages)' == '' ">true</RestorePackages>
しかし、これはうまくいきませんでした。
更新 2 機能させるために、次のプロパティ NuGet.targets も設定します。
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'true' ">false</RequireRestoreConsent>
これにより、ビルドが正常に実行されました。