C# 恢复nuget软件包的最佳方法是什么?
我有一个使用自定义nuget包源的解决方案。现在,我在位于解决方案文件附近的C# 恢复nuget软件包的最佳方法是什么?,c#,visual-studio,nuget,nuget-package,nuget-package-restore,C#,Visual Studio,Nuget,Nuget Package,Nuget Package Restore,我有一个使用自定义nuget包源的解决方案。现在,我在位于解决方案文件附近的Nuget.config文件中指定它们(以便从源代码管理中检出): 这在从VisualStudio构建解决方案时非常有效。它设法读取这个nuget.config文件并成功地恢复所有包 现在,我正在配置从TeamCity构建的解决方案。因此,我添加了项目配置和构建步骤来构建它。但是TeamCity默认情况下不会恢复nuget包。因此,我添加了一个单独的Nuget安装程序build步骤,为我的解决方案运行Nuget(特定版本
Nuget.config
文件中指定它们(以便从源代码管理中检出):
这在从VisualStudio构建解决方案时非常有效。它设法读取这个nuget.config
文件并成功地恢复所有包
现在,我正在配置从TeamCity构建的解决方案。因此,我添加了项目配置和构建步骤来构建它。但是TeamCity默认情况下不会恢复nuget包。因此,我添加了一个单独的Nuget安装程序
build步骤,为我的解决方案运行Nuget(特定版本)还原。但问题是,它似乎没有在解决方案文件旁边的.nuget
文件夹中看到来自nuget.config
文件的自定义nuget包源
我认为有两种可能的方法可以克服这一问题:
Nuget安装程序build步骤中配置我的自定义包源
Nuget.config
中配置我的自定义包源<?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文件夹中归档(我还没有验证):
在解决方案的.nuget文件夹的nuget.config中配置包源。您必须指定nuget使用解决方案文件夹中的nuget.config,默认情况下使用appData中的nuget.config使用“ConfigFile”-选项Visual Studio和nuget的版本是什么?如果您使用的是NuGet 2.7或更高版本,并且有一个仍为MSBuild集成还原配置的解决方案,则该解决方案的.NuGet文件夹中可能有一个旧版本的NuGet.exe。这将导致生成失败,并出现一个错误,表明您未同意恢复包。建议迁移任何使用MSBuild集成还原的项目,以使用NuGet 2.7及更高版本的自动还原功能@Leo MSFT VS15和nuget 4.1.0。迁移到“MSBuild集成还原”意味着根本没有.nuget
文件夹,对吗?如何指定自定义nuget源代码?@D.J.Hmm,看起来是一个很有前途的解决方案。我会试试看
<?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>
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<PackageSource Include="https://nuget.org/api/v2/" />
<PackageSource Include="\\MyShare" />
<PackageSource Include="http://MyServer/" />
</ItemGroup>