VSO 托管构建在第 3 部分引用的 dotnet 还原步骤中失败
VSO Hosted Build fails with in dotnet restore step on 3rd part references
我在 VSO 中有一个 .NET Core Web 项目,我正在尝试为其设置托管构建。该项目引用了第 3 方 (Syncfusion),当 dotnet 恢复步骤发生时它失败并出现以下错误:
Unable to resolve 'Syncfusion.XlsIO.MVC (>= 14.2600.0.32-preview2-final)' for '.NETCoreApp,Version=v1.1'.
Unable to resolve 'Syncfusion.Compression.MVC (>= 14.2600.0.32-preview2-final)' for '.NETCoreApp,Version=v1.1'.
此构建是一个非常基础的构建。我所做的只是采用默认的 VS 构建定义,并在 NeGet 恢复步骤之后添加了 dotnet 恢复步骤。
我做了一些阅读,发现 1 件事说你需要在 git 存储库的 packages 文件夹中包含第 3 方的东西,所以我修改并 git 忽略文件以包含 2包目录中的 Syncfusion nuget 文件夹。
Syncfusion nuget 包显然是nuget 包,但它们不在普通的nuget 中。在本地我不得不添加一个指向 Syncfusion URL.
的新 nuget 包源
编辑
基于其他问题和阅读。我做了以下更改。首先,我将构建步骤更改为基于此处列出的内容 (https://www.visualstudio.com/en-us/docs/build/apps/aspnet/ci/build-aspnet-core)。然后我删除了命令行步骤并将它们替换为相应的 .NET Core 步骤。这没什么区别,只是想列出我目前所在的位置。
我在项目根目录添加了一个nuget.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<!-- remove any machine-wide sources with <clear/> -->
<clear />
<!-- also get packages from the NuGet Gallery -->
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<!-- add a Team Services feed -->
<add key="syncfusion" value="./packages/Syncfusion.Compression.MVC/14.2600.0.32-preview2-final" />
<add key="syncfusion" value="./packages/Syncfusion.XlsIO.MVC/14.2600.0.32-preview2-final" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>
上面列出的 2 个 Syncfusion 目录是本地 nuget 包,是 git 存储库的一部分。我不知道上面列出的路径是否正确(它是 nuget.config 文件(项目的根)的正确相对路径。
当 dotnet restore 步骤运行时,我仍然遇到无法解决的错误。出于某种原因,对于 XlsIO 一个,我现在只得到 1 个错误。我在日志中的任何地方都没有看到压缩包
最终工作答案
我开始工作的 nuget.config 文件是
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<!-- remove any machine-wide sources with <clear/> -->
<clear />
<!-- also get packages from the NuGet Gallery -->
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<!-- add a Team Services feed -->
<add key="syncfusionCompression" value="packages\Syncfusion.Compression.MVC.2600.0.32-preview2-final" />
<add key="syncfusionXls" value="packages\Syncfusion.XlsIO.MVC.2600.0.32-preview2-final" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>
如果第三部分引用在可以从托管代理访问的 NuGet 服务器中,您可以参考这些步骤添加源:
- Edit/create 构建定义
- 第一种方式:在(工具:Nuget工具路径,参数:
sources add -name {your feed name} -source {your feed URL} -username [username] -password [password])
之前添加命令行构建step/task 注意:您需要在源代码管理和映射中添加Nuget.exe工具构建代理
- 另一种方法是,您可以在源代码管理(存储库)中包含 Nuget.config 文件,并通过指定 .Net Core Restore 构建的
--configfile [Nuget.Config path]
参数将此文件用作配置文件 step/task
否则,您需要将这些参考文件包含在源代码管理(存储库)中
已通过为包源提供唯一键名解决了该问题。
首先你已经添加了两次具有相同密钥名称的不同 NuGet 包源,如“syncfusion”。因此,它仅在 XlsIO NuGet 包中显示错误。然后您将键名更改为“syncfusionCompression”和“SyncfsuionXls”。所以,问题已经解决了。
键名在NuGet.Config中应该是唯一的。
我在 VSO 中有一个 .NET Core Web 项目,我正在尝试为其设置托管构建。该项目引用了第 3 方 (Syncfusion),当 dotnet 恢复步骤发生时它失败并出现以下错误:
Unable to resolve 'Syncfusion.XlsIO.MVC (>= 14.2600.0.32-preview2-final)' for '.NETCoreApp,Version=v1.1'.
Unable to resolve 'Syncfusion.Compression.MVC (>= 14.2600.0.32-preview2-final)' for '.NETCoreApp,Version=v1.1'.
此构建是一个非常基础的构建。我所做的只是采用默认的 VS 构建定义,并在 NeGet 恢复步骤之后添加了 dotnet 恢复步骤。
我做了一些阅读,发现 1 件事说你需要在 git 存储库的 packages 文件夹中包含第 3 方的东西,所以我修改并 git 忽略文件以包含 2包目录中的 Syncfusion nuget 文件夹。
Syncfusion nuget 包显然是nuget 包,但它们不在普通的nuget 中。在本地我不得不添加一个指向 Syncfusion URL.
的新 nuget 包源编辑 基于其他问题和阅读。我做了以下更改。首先,我将构建步骤更改为基于此处列出的内容 (https://www.visualstudio.com/en-us/docs/build/apps/aspnet/ci/build-aspnet-core)。然后我删除了命令行步骤并将它们替换为相应的 .NET Core 步骤。这没什么区别,只是想列出我目前所在的位置。
我在项目根目录添加了一个nuget.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<!-- remove any machine-wide sources with <clear/> -->
<clear />
<!-- also get packages from the NuGet Gallery -->
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<!-- add a Team Services feed -->
<add key="syncfusion" value="./packages/Syncfusion.Compression.MVC/14.2600.0.32-preview2-final" />
<add key="syncfusion" value="./packages/Syncfusion.XlsIO.MVC/14.2600.0.32-preview2-final" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>
上面列出的 2 个 Syncfusion 目录是本地 nuget 包,是 git 存储库的一部分。我不知道上面列出的路径是否正确(它是 nuget.config 文件(项目的根)的正确相对路径。
当 dotnet restore 步骤运行时,我仍然遇到无法解决的错误。出于某种原因,对于 XlsIO 一个,我现在只得到 1 个错误。我在日志中的任何地方都没有看到压缩包
最终工作答案 我开始工作的 nuget.config 文件是
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<!-- remove any machine-wide sources with <clear/> -->
<clear />
<!-- also get packages from the NuGet Gallery -->
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<!-- add a Team Services feed -->
<add key="syncfusionCompression" value="packages\Syncfusion.Compression.MVC.2600.0.32-preview2-final" />
<add key="syncfusionXls" value="packages\Syncfusion.XlsIO.MVC.2600.0.32-preview2-final" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>
如果第三部分引用在可以从托管代理访问的 NuGet 服务器中,您可以参考这些步骤添加源:
- Edit/create 构建定义
- 第一种方式:在(工具:Nuget工具路径,参数:
sources add -name {your feed name} -source {your feed URL} -username [username] -password [password])
之前添加命令行构建step/task 注意:您需要在源代码管理和映射中添加Nuget.exe工具构建代理 - 另一种方法是,您可以在源代码管理(存储库)中包含 Nuget.config 文件,并通过指定 .Net Core Restore 构建的
--configfile [Nuget.Config path]
参数将此文件用作配置文件 step/task
否则,您需要将这些参考文件包含在源代码管理(存储库)中
已通过为包源提供唯一键名解决了该问题。
首先你已经添加了两次具有相同密钥名称的不同 NuGet 包源,如“syncfusion”。因此,它仅在 XlsIO NuGet 包中显示错误。然后您将键名更改为“syncfusionCompression”和“SyncfsuionXls”。所以,问题已经解决了。
键名在NuGet.Config中应该是唯一的。