【发布时间】:2021-03-29 09:08:40
【问题描述】:
NuGet 包“看起来是空的”
我有一个创建两个 .dll 文件的解决方案。
- JReyLibrary - 一些常用功能和控件。
- JRTestLib - 测试有帮助。
我能够使用classic pipeline 为两者构建 NuGet 包并安装到应用程序中。
当我更改为 YAML 管道时,我能够构建包,但不会安装在应用程序中。
安装没有错误,但没有显示在参考资料中。
我很困惑,一些文档说如果我有 .csproj 文件,我不需要 .nuspec 文件。
我没有*[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 JRTestLib.dll
1 File(s) 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'
我没有看到任何对此有帮助的文档。
【问题讨论】:
-
我添加了一个 .nuspec 文件并在本地计算机上运行,.dll 文件位于
lib目录中,当在管道中运行时,.dll 位于 @ 987654338@包目录。
标签: c# nuget yaml nuget-package nuget-package-restore