[英]What is the best way to restore nuget packages?
我有一个使用自定义nuget包源的解决方案。 现在,我在解决方案文件附近的Nuget.config
文件中指定它们(以便从源代码管理中检出):
|- MySoulution.sln
|- MyProjFolder
|- .nuget
|- Nuget.exe
|- Nuget.config
|- Nuget.targets
从VisualStudio构建解决方案时,此方法效果很好。 它设法读取此nuget.config
文件并成功还原所有软件包。
现在,我正在配置要从TeamCity构建的解决方案。 因此,我添加了项目配置和构建步骤。 但是,TeamCity不会默认还原nuget软件包。 因此,我为解决方案添加了一个单独的Nuget installer
构建步骤,该步骤运行nuget(特定版本)还原。 但是问题是,似乎没有从解决方案文件旁边的.nuget
文件夹中的Nuget.config
文件中看到我的自定义nuget包源。
我看到两种可能的方法来克服此问题:
Nuget installer
构建步骤中配置我的自定义软件包源。 Nuget.config
中配置我的自定义程序包源。 我不喜欢这两种方法,因为它们没有为我提供从TeamCity和VisualStudio进行构建的单一配置。
总而言之,问题是:如何配置自定义程序包源,以便它们在TeamCity和VisualStudio中都可见,而无需我在不同位置进行多次配置?
如何配置我的自定义程序包源,以使它们在TeamCity和VisualStudio中都可见,而无需在不同位置进行多次配置?
如您所知,如果您不想在不同位置多次配置自定义nuget源,则可以在NuGet.config中设置自定义nuget源,并将其添加到源代码控制中。 因此,解决问题的关键是为什么NuGet不尊重解决方案文件旁边.nuget文件夹中Nuget.config文件中的自定义nuget包源。
就像我的评论一样,如果您使用的是NuGet 2.7或更高版本,并且仍为MSBuild集成还原配置了解决方案,则解决方案的.nuget文件夹中可能具有nuget.exe的较旧版本。 这将导致构建失败,并显示一条错误,指出您未同意还原软件包。 为避免此问题,建议使用MSBuild集成还原迁移任何项目,以使用NuGet 2.7及更高版本的自动还原功能,您可以按照以下过程进行操作:
关闭Visual Studio,以避免潜在的文件锁定和冲突。
如果使用TFS:从解决方案的.nuget文件夹中删除nuget.exe和NuGet.targets,然后从解决方案工作区中删除这些文件。 如禁用Team Foundation版本控制程序中所述,使用disableSourceControlIntegration设置保留Nuget.Config。
如果不使用TFS:从解决方案和解决方案工作区中删除.nuget文件夹。
编辑解决方案中的每个项目文件,删除元素,并删除对NuGet.targets文件的任何引用。 这些设置通常如下所示:
之后,将NuGet.config放在带有自定义NuGet源的解决方案文件旁边:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
<packageSources>
<add key="CustomSource" value="http://CustomSource/nuget" />
</packageSources>
<packageRestore>
<add key="enabled" value="True" />
</packageRestore>
</configuration>
现在,在NuGet Installer步骤中,现在有一个“ Package Sources ”字段,您可以填写以使Team City使用自定义提要:
您可以参考此文档使用TeamCity还原NuGet软件包以获取更多详细信息。
此外,我们还可以在.nuget文件夹中的NuGet.targets文件中指定自定义供稿 (我尚未验证):
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<PackageSource Include="https://nuget.org/api/v2/" />
<PackageSource Include="\\MyShare" />
<PackageSource Include="http://MyServer/" />
</ItemGroup>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.