VSTS 构建包位置配置
VSTS Build Package location config
在 VSTS 中构建项目时,我们首先在 NUget 还原步骤中下载 nuget 包。
nuget.config 的路径指向解决方案文件夹 .nuget 中的一个文件。
在这个文件中有一个存储库的路径。
当 运行 构建时,恢复步骤工作正常,所有包都恢复到此目录中。
2017-07-12T14:11:15.7270814Z Adding package '***' to folder 'd:\a\s\microservices\MyPackages12'
但是在构建过程中由于位置错误而找不到包。
2017-07-12T14:11:27.7978408Z Considered "..\..\MyPackages\
这似乎只对来自 vsts 的包提要中的包失败。
在哪里或如何更改构建步骤中包的位置?
谢谢..
编辑
Nuget.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="..\MyPackages" />
</config>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
<add key="MyWebAPI" value="https://MyWebAPI.pkgs.visualstudio.com/_packaging/MyWebAPI/nuget/v3/index.json" protocolVersion="3" />
</packageSources>
</configuration>
编辑 2
我已经开始工作了,但不是我喜欢的那样。
第一个当前解决方案。 nuget 安装程序的版本 2
当前 nuget.config.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="..\s\WebSiteCiCd\Packages" />
</config>
<packageSources>
<!-- remove any machine-wide sources with <clear/> -->
<clear />
<!-- add a Team Services feed -->
<add key="MyGreatFeed" value="https://CICD.pkgs.visualstudio.com/_packaging/CICDWebAPI/nuget/v3/index.json" />
<!-- also get packages from the NuGet Gallery -->
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>
我不喜欢的是
<add key="repositoryPath" value="..\s\WebSiteCiCd\Packages" />
我想要一个没有具体项目名称的集中式 nuget.config。
我认为问题是因为构建任务没有查看 nuget.config 设置,而是采用 de proj 文件中的设置。
在失败的构建中..在这种情况下我使用了
<add key="repositoryPath" value="..\MyPackages" />
这会导致恢复步骤
2017-07-14T06:35:40.5913207Z Restoring NuGet package Microsoft.AspNet.WebPages.3.2.3.
2017-07-14T06:35:40.5923209Z GET https://www.nuget.org/api/v2/Packages(Id='Microsoft.AspNet.WebPages',Version='3.2.3')
2017-07-14T06:35:40.6643208Z OK https://www.nuget.org/api/v2/Packages(Id='Microsoft.AspNet.WebApi.WebHost',Version='5.2.3') 113ms
2017-07-14T06:35:40.6683214Z GET https://www.nuget.org/api/v2/package/Microsoft.AspNet.WebApi.WebHost/5.2.3
2017-07-14T06:35:40.6798131Z Completed installation of Microsoft.AspNet.Razor 3.2.3
2017-07-14T06:35:40.6818132Z Adding package 'Microsoft.AspNet.Razor.3.2.3' to folder 'd:\a\MyPackages'
2017-07-14T06:35:40.6828123Z Completed installation of Microsoft.AspNet.Mvc 5.2.3
但在构建步骤中它使用不同的位置
2017-07-14T06:35:49.5938928Z d:\a\s\WebSiteCiCd\WebSiteCiCd\WebSiteCiCd.csproj(297,5): error : This project references NuGet package(s) that are missing on this computer.
Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.
The missing file is ..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props.
它使用..\packages\参考路径
希望这对您有所帮助..
更新项目文件中的引用。看起来有人从他们机器上存在的非标准位置引用了一个包。
解决此类问题的最简单方法是删除 所有 本地包(或者只是从源代码管理重新同步),然后让恢复 运行 本地。这将很快找出参考文献的问题。
该任务使用临时 Nuget 配置文件(例如 -ConfigFile xxx_work\Nuget\tempNuGet_1951.config),然后 repositoryPath 基于此临时文件。
因此对于 ..\s\WebSiteCiCd\Packages 路径,包将恢复到 xxx_work\s\WebSiteCiCd\ Packages 文件夹。 (..\MyPackages=> xxx_work\MyPackages).
更好的方法是您可以删除 repositoryPath 的设置(删除配置部分),只需对 local 和 build server,则结构相同。
感谢@starain-MSFT 的解决方案:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
<add key="My packages" value="https://mypackages.pkgs.visualstudio.com/_packaging/MyWebAPI/nuget/v3/index.json" />
</packageSources>
</configuration>
在 csproj 文件中设置包的提示路径:例如
<Reference Include="Antlr3.Runtime, Version=3.5.0.2, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
<HintPath>..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath>
仍然认为如果构建任务可以使用 nuget.config 文件来设置包的选项会很方便
在 VSTS 中构建项目时,我们首先在 NUget 还原步骤中下载 nuget 包。
nuget.config 的路径指向解决方案文件夹 .nuget 中的一个文件。 在这个文件中有一个存储库的路径。
当 运行 构建时,恢复步骤工作正常,所有包都恢复到此目录中。
2017-07-12T14:11:15.7270814Z Adding package '***' to folder 'd:\a\s\microservices\MyPackages12'
但是在构建过程中由于位置错误而找不到包。
2017-07-12T14:11:27.7978408Z Considered "..\..\MyPackages\
这似乎只对来自 vsts 的包提要中的包失败。
在哪里或如何更改构建步骤中包的位置?
谢谢..
编辑
Nuget.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="..\MyPackages" />
</config>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
<add key="MyWebAPI" value="https://MyWebAPI.pkgs.visualstudio.com/_packaging/MyWebAPI/nuget/v3/index.json" protocolVersion="3" />
</packageSources>
</configuration>
编辑 2 我已经开始工作了,但不是我喜欢的那样。
第一个当前解决方案。 nuget 安装程序的版本 2
当前 nuget.config.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="..\s\WebSiteCiCd\Packages" />
</config>
<packageSources>
<!-- remove any machine-wide sources with <clear/> -->
<clear />
<!-- add a Team Services feed -->
<add key="MyGreatFeed" value="https://CICD.pkgs.visualstudio.com/_packaging/CICDWebAPI/nuget/v3/index.json" />
<!-- also get packages from the NuGet Gallery -->
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
</packageSources>
<activePackageSource>
<add key="All" value="(Aggregate source)" />
</activePackageSource>
</configuration>
我不喜欢的是
<add key="repositoryPath" value="..\s\WebSiteCiCd\Packages" />
我想要一个没有具体项目名称的集中式 nuget.config。
我认为问题是因为构建任务没有查看 nuget.config 设置,而是采用 de proj 文件中的设置。
在失败的构建中..在这种情况下我使用了
<add key="repositoryPath" value="..\MyPackages" />
这会导致恢复步骤
2017-07-14T06:35:40.5913207Z Restoring NuGet package Microsoft.AspNet.WebPages.3.2.3.
2017-07-14T06:35:40.5923209Z GET https://www.nuget.org/api/v2/Packages(Id='Microsoft.AspNet.WebPages',Version='3.2.3')
2017-07-14T06:35:40.6643208Z OK https://www.nuget.org/api/v2/Packages(Id='Microsoft.AspNet.WebApi.WebHost',Version='5.2.3') 113ms
2017-07-14T06:35:40.6683214Z GET https://www.nuget.org/api/v2/package/Microsoft.AspNet.WebApi.WebHost/5.2.3
2017-07-14T06:35:40.6798131Z Completed installation of Microsoft.AspNet.Razor 3.2.3
2017-07-14T06:35:40.6818132Z Adding package 'Microsoft.AspNet.Razor.3.2.3' to folder 'd:\a\MyPackages'
2017-07-14T06:35:40.6828123Z Completed installation of Microsoft.AspNet.Mvc 5.2.3
但在构建步骤中它使用不同的位置
2017-07-14T06:35:49.5938928Z d:\a\s\WebSiteCiCd\WebSiteCiCd\WebSiteCiCd.csproj(297,5): error : This project references NuGet package(s) that are missing on this computer.
Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.
The missing file is ..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props.
它使用..\packages\参考路径
希望这对您有所帮助..
更新项目文件中的引用。看起来有人从他们机器上存在的非标准位置引用了一个包。
解决此类问题的最简单方法是删除 所有 本地包(或者只是从源代码管理重新同步),然后让恢复 运行 本地。这将很快找出参考文献的问题。
该任务使用临时 Nuget 配置文件(例如 -ConfigFile xxx_work\Nuget\tempNuGet_1951.config),然后 repositoryPath 基于此临时文件。
因此对于 ..\s\WebSiteCiCd\Packages 路径,包将恢复到 xxx_work\s\WebSiteCiCd\ Packages 文件夹。 (..\MyPackages=> xxx_work\MyPackages).
更好的方法是您可以删除 repositoryPath 的设置(删除配置部分),只需对 local 和 build server,则结构相同。
感谢@starain-MSFT 的解决方案:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
<add key="My packages" value="https://mypackages.pkgs.visualstudio.com/_packaging/MyWebAPI/nuget/v3/index.json" />
</packageSources>
</configuration>
在 csproj 文件中设置包的提示路径:例如
<Reference Include="Antlr3.Runtime, Version=3.5.0.2, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
<HintPath>..\packages\Antlr.3.5.0.2\lib\Antlr3.Runtime.dll</HintPath>
仍然认为如果构建任务可以使用 nuget.config 文件来设置包的选项会很方便