ana*_*der 11 build-definition nuget nuget-package-restore azure-devops
我有一个私有的NuGet包源运行,我用它来共享我的项目之间的某些功能和扩展.它在Visual Studio中运行良好,但最近我开始为Visual Studio Online上的一个项目设置持续集成构建,似乎VSO无法看到我的私有源.
我正在使用新的包恢复方法 - 涉及在VS选项中设置"允许NuGet下载丢失的包"复选框.我没有在解决方案上下文菜单中使用"启用NuGet包恢复"选项,因为这实际上是执行此操作的旧方法并导致其他地方出现问题.
我也没做任何修改我的项目文件的事情; 我正在使用自定义构建定义(使用XAML Workflow的东西),这样我就可以将它应用到我的任何项目中,只需从构建定义编辑器下的"构建过程模板"下拉列表中选择它.我这样做是因为我正在添加各种其他步骤,包括一些后期构建脚本,以便于自动部署到托管服务器; 其中一些步骤有点复杂,因此将它们保留在构建过程中意味着我只需要设置一次.
因此,如果不使用将nuget.exe放入解决方案文件夹的旧上下文菜单解决方案,并且不会弄乱项目本身,我如何才能获得VSO的构建以从我的私有源恢复包?
构建工作流模板有一个活动"NuGetRestore",它可以获取命令行参数.我添加了以下内容:
"-source https://www.nuget.org/api/v2/ http://www.example.com/nuget"
Run Code Online (Sandbox Code Playgroud)
但这似乎没有什么区别.此活动还有一个"指定需要恢复其NuGet包的解决方案"的字段,我只是将ProjectsToBuild其设置为定义构建时设置的变量.我没有从nuget.exe得到任何错误(至少,我没有看到),但构建失败.有趣的是,它表示相关的命名空间不存在,而不是无法解析引用.有任何想法吗?
我相信您需要做的是添加解决方案级别 NuGet.config 文件。NuGet 配置文件的链接方式与 web.config 非常相似。您可以在这里找到文档
NuGet 首先从默认位置加载 NuGet.config,然后加载从当前驱动器的根目录开始并以当前目录结束的任何名为 NuGet.config 的文件。
它看起来类似于:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageRestore>
<!-- Allow NuGet to download missing packages -->
<add key="enabled" value="True" />
<!-- Automatically check for missing packages during build in Visual Studio -->
<add key="automatic" value="True" />
</packageRestore>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
<add key="PrivateNugetName" value="http://your.nuget.server.com/nuget" />
</packageSources>
<disabledPackageSources />
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3491 次 |
| 最近记录: |