问题描述
NuGet 包“似乎是空的”
- JReyLibrary - 一些常用功能和控件。
- JRTestLib - 测试有帮助。
我能够使用 classic pipeline
为两者构建 NuGet 包并安装到应用程序中。
当我更改为 YAML 管道时,我能够构建包,但不会安装在应用程序中。
安装没有错误,但没有出现在参考资料中。
我很困惑,有些文档说如果我有 .nuspec
文件,我不需要 .csproj
文件。
我没有 *[library]*.nuspec
文件。
观察
检查 .nuget\packages[library] 发现目录结构不同。
经典流水线
以下是一个旧版本,在VS项目参考中加载并可见。这是使用 classic pipeline
创建的。
Directory of C:\Users\james\.nuget\packages\jrtestlib\0.14.6535.24741
07/30/2020 07:39 AM <DIR> .
07/30/2020 07:39 AM <DIR> ..
07/30/2020 07:39 AM 130 .nupkg.Metadata
07/30/2020 07:39 AM 7,561 jrtestlib.0.14.6535.24741.nupkg
07/30/2020 07:39 AM 88 jrtestlib.0.14.6535.24741.nupkg.sha512
11/22/2017 01:45 PM 605 jrtestlib.nuspec
07/30/2020 07:39 AM <DIR> lib
4 File(s) 8,384 bytes
Directory of C:\Users\james\.nuget\packages\jrtestlib\0.14.6535.24741\lib
07/30/2020 07:39 AM <DIR> .
07/30/2020 07:39 AM <DIR> ..
07/30/2020 07:39 AM <DIR> net40
0 File(s) 0 bytes
Directory of C:\Users\james\.nuget\packages\jrtestlib\0.14.6535.24741\lib\net40
07/30/2020 07:39 AM <DIR> .
07/30/2020 07:39 AM <DIR> ..
11/22/2017 01:45 PM 11,264 JRTestLib.dll
1 File(s) 11,264 bytes
Total Files Listed:
5 File(s) 19,648 bytes
8 Dir(s) 389,112,635,392 bytes free
注意:.dll
文件包含在 .\lib\net40 目录中。
我无法显示 classic pipeline
步骤,因为它说我无法嵌入图像。
有一项我无法转换为 YAML。 Output Variables
选项包含 NuGetPackager_5
(JReyLibrary) 和 NuGetPackager_11
(JRTestLib)。
我还注意到发布者任务在复制文件任务之前。
YAML 管道
这个包是使用 YAML
来创建包的。
这些包安装没有错误,但没有显示在项目的参考资料中。
找到以下目录结构。
Directory of C:\Users\james\.nuget\packages\jrtestlib\0.16.20201211.7
12/11/2020 03:09 PM <DIR> .
12/11/2020 03:09 PM <DIR> ..
12/11/2020 03:09 PM 130 .nupkg.Metadata
12/11/2020 03:09 PM 6,708 jrtestlib.0.16.20201211.7.nupkg
12/11/2020 03:09 PM 88 jrtestlib.0.16.20201211.7.nupkg.sha512
12/11/2020 03:09 PM 586 jrtestlib.nuspec
12/11/2020 03:09 PM <DIR> tools
4 File(s) 7,512 bytes
Directory of C:\Users\james\.nuget\packages\jrtestlib\0.16.20201211.7\tools
12/11/2020 03:09 PM <DIR> .
12/11/2020 03:09 PM <DIR> ..
12/11/2020 03:09 PM 11,264 bytes
Total Files Listed:
5 File(s) 18,776 bytes
5 Dir(s) 388,888,588,288 bytes free
注意:.dll
文件位于 ./Tools 目录中。
更改应用项目引用此文件直接正确编译。
以下显示了打包发布 NuGet 包的任务。
YAML 管道片段- task: NuGetCommand@2
displayName: 'NuGet pack JReyLibrary'
env:
packageversion: $(packageversion)
inputs:
command: pack
packagesToPack: JLReyLibrary/JReyLibrary.csproj
versioningScheme: byEnvVar
versionEnvVar: packageversion
includeSymbols: true
toolPackage: true
enabled: true
- task: NuGetCommand@2
displayName: 'NuGet pack JRTestLib'
env:
packageversion: $(packageversion)
inputs:
command: pack
packagesToPack: JLReyLibrary/JRTestLib/JRTestLib.csproj
versioningScheme: byEnvVar
versionEnvVar: packageversion
includeSymbols: true
toolPackage: true
enabled: true
- task: NuGetCommand@2
displayName: NuGet Push
inputs:
command: 'push'
packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg'
nuGetFeedType: 'internal'
publishVstsFeed: 'jlr_Feed'
- task: copyFiles@2
inputs:
SourceFolder: '$(build.sourcesdirectory)'
Contents: '**'
TargetFolder: '$(build.artifactstagingdirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
我没有看到任何有助于此的文档。
解决方法
我发现了问题!
NuGetCommand 包含选项 toolPackage: true
,当它被删除时它构建了一个普通库。
解决了
节礼日快乐