使用 Team Foundation Server 缺少依赖项创建 NuGet
Creating NuGet using Team Foundation Server missing dependencies
我在 .net 标准 2.0 中创建了一个简单的 class 库,其中包含一些 nuget 依赖项,例如 Dapper。
我正在使用 Team Foundation Server 16 构建和打包项目。我的问题是,当我浏览到我的新 NuGet 包时,它没有在 VS 的 NuGet 包管理器中列出它的依赖项,之后我必须手动安装它们。
从 Visual Studio 2019 创建相同 class 库的 nuget 包在本地按预期工作。
我在 TFS 上的构建任务是:
- 使用 nuget 5.4.0
- NuGet 恢复
- 构建解决方案
- 运行脚本(更新版本号的.bat文件)
- NuGet 包
- 发布构建工件
NuGet 包使用命令 "pack" 的默认设置和仅指向 .csproj 文件的路径。
Creating a nuget package of the same class library from Visual Studio
2019 locally works as intended.
这是一个关于 nuget pack
命令的问题。当你在本地VS中打包.net standard
项目时,它(右键=>打包按钮)实际上调用dotnet cli
而不是nuget.exe
来做pack
工作。
目前,nuget pack
命令不能很好地与那些使用 PackageReference
管理 nuget 包的项目一起使用。 (包括 .net framework
个项目以及 PackageReference
、.net core
和 .net standard
个项目)。
To resolve that issue(For TFS2017 and above):
使用dotnet pack command instead of nuget pack 命令。对于 tfs 中的管道,使用 dotnet restore、build、pack 任务而不是 nuget restore、nuget pack 任务。
TFS2016 更新 1:
由于TFS会在tfs agents中运行那些任务,另一种方法是手动安装.net core sdk
,然后使用command-line task执行dotnet pack
命令来创建nuget包。
.net core sdk
下载 link here.
更新2:
此外,我们仍然可以使用nuget pack
command/task。要包含这些依赖项,我们需要创建一个额外的 xx.nuspec 文件,其内容类似于:
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata>
<id>PackageName</id>
<version>1.0.0</version>
<title>xxx</title>
<authors>xxx</authors>
<owners>xxx</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<description>xxx</description>
<releaseNotes>xxx</releaseNotes>
<copyright>Copyright 2020</copyright>
<tags>Tag1 Tag2</tags>
<dependencies>
<dependency id="Dapper" version="1.30.0"/>
//define other dependencies manually here.
</dependencies>
</metadata>
</package>
将此文件放在 xx.csproj
存在的同一目录中,然后 nuget pack
command/task 现在可以创建具有依赖项的包。
我在 .net 标准 2.0 中创建了一个简单的 class 库,其中包含一些 nuget 依赖项,例如 Dapper。
我正在使用 Team Foundation Server 16 构建和打包项目。我的问题是,当我浏览到我的新 NuGet 包时,它没有在 VS 的 NuGet 包管理器中列出它的依赖项,之后我必须手动安装它们。
从 Visual Studio 2019 创建相同 class 库的 nuget 包在本地按预期工作。
我在 TFS 上的构建任务是:
- 使用 nuget 5.4.0
- NuGet 恢复
- 构建解决方案
- 运行脚本(更新版本号的.bat文件)
- NuGet 包
- 发布构建工件
NuGet 包使用命令 "pack" 的默认设置和仅指向 .csproj 文件的路径。
Creating a nuget package of the same class library from Visual Studio 2019 locally works as intended.
这是一个关于 nuget pack
命令的问题。当你在本地VS中打包.net standard
项目时,它(右键=>打包按钮)实际上调用dotnet cli
而不是nuget.exe
来做pack
工作。
目前,nuget pack
命令不能很好地与那些使用 PackageReference
管理 nuget 包的项目一起使用。 (包括 .net framework
个项目以及 PackageReference
、.net core
和 .net standard
个项目)。
To resolve that issue(For TFS2017 and above):
使用dotnet pack command instead of nuget pack 命令。对于 tfs 中的管道,使用 dotnet restore、build、pack 任务而不是 nuget restore、nuget pack 任务。
TFS2016 更新 1:
由于TFS会在tfs agents中运行那些任务,另一种方法是手动安装.net core sdk
,然后使用command-line task执行dotnet pack
命令来创建nuget包。
.net core sdk
下载 link here.
更新2:
此外,我们仍然可以使用nuget pack
command/task。要包含这些依赖项,我们需要创建一个额外的 xx.nuspec 文件,其内容类似于:
<?xml version="1.0" encoding="utf-8"?>
<package >
<metadata>
<id>PackageName</id>
<version>1.0.0</version>
<title>xxx</title>
<authors>xxx</authors>
<owners>xxx</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<license type="expression">MIT</license>
<description>xxx</description>
<releaseNotes>xxx</releaseNotes>
<copyright>Copyright 2020</copyright>
<tags>Tag1 Tag2</tags>
<dependencies>
<dependency id="Dapper" version="1.30.0"/>
//define other dependencies manually here.
</dependencies>
</metadata>
</package>
将此文件放在 xx.csproj
存在的同一目录中,然后 nuget pack
command/task 现在可以创建具有依赖项的包。