c# - 在 TeamCity 中包含 NuGet 包

标签 c# windows-services teamcity nuget .net-4.5

我最近开始使用 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>

这使得构建运行成功!

最佳答案

NuGet 内置的启用包恢复功能使您可以非常轻松地设置工作流的预构建部分。为此,请在 Visual Studio 的解决方案资源管理器中右键单击解决方案节点,然后单击启用 NuGet 包还原选项。请注意,您需要在系统上安装 NuGet Visual Studio 扩展。如果你这样做了,但你仍然没有看到这个菜单项出现,你要么已经启用了这个选项,要么你的解决方案目录中有一个名为 .nuget 的文件夹。

设置该选项后,您现在可以删除包安装目录的所有子文件夹,默认情况下为 $(SolutionDir)\packages,但 repositories.config 文件除外,您的解决方案仍应正确编译。在编译期间,您应该会在 Visual Studio 输出窗口中看到 NuGet 安装跟踪,并且您应该还会看到所需的 NuGet 包重新出现在包安装目录中。

另见 Using Nuget without committing packages .

关于c# - 在 TeamCity 中包含 NuGet 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14438650/

相关文章:

c# - case 标签的顺序对 switch 语句的效率有多大影响?

java - 在 Windows 服务中运行 Spring Integration;不为 "Trigger"入站

windows - Windows服务如何以标准时间间隔触发应用程序?

teamcity - 在 TeamCity "NuGet Pack"运行者类型中,如何避免使用 BasePath 选项?

.net - 如何在MSBuild构建的Azure云服务包中启用远程调试

c# - 单击鼠标左键打开上下文菜单 wpf c#

c# - 将 lambda 表达式作为函数参数传递

c# - 使用 selenium、Nunit、Selenium Grid、C#、webdriver/remote control 的自动浏览器测试

C# 定时器间隔每 24 小时

iis - 使用TeamCity进行Web部署失败,错误为ERROR_EXCEEDED_MAX_SITE_CONNECTIONS