我已经阅读了有关将项目依赖项实际捆绑到 Nuget 包中所必须经历的不同解决方法,而不是让每个项目都被引用为自己的 nuget 依赖项。 约瑟夫·奥托森 (Josef Ottoson) 的这篇文章是迄今为止最清晰、最简洁的。
我喜欢他编辑 .nuspec 文件而不是 .csproj 文件的方法。我正在尝试弄清楚这是否可以在 Azure Pipelines 中实现。
我像这样设置了一个新的管道:
在
dotnet build
中,我设置了路径以包含我想要构建的所有项目文件 CompanyName.Library.@(Core|Dep1|Dep2|Dep3)/*.csproj
。生成的 .dll 应该全部位于类似 $(build.artifactstagingdirectory)
. 的位置
我尝试将以下内容添加到我的基础项目中的 .nuspec 文件中:
<files>
<file src=".\CompanyName.Library.*.dll" target="lib\net6.0" />
</files>
在
dotnet pack
任务中,我设置了“请勿构建”标志(因为我在上一步中构建了)并将 nuspec 文件的路径设置为 CompanyName.Library.Core/*.nuspec
。
除了设置用于发布包的目标 Azure Artifact 之外,我几乎在
NuGet push
任务中保留了默认值。
这不起作用——我生成的 .nupkg 不包含任何 dll。
以前有人做过这个并让它工作吗?或者有人知道我能做些什么来让它工作吗?
下面是我这边的一个例子,可能对你有帮助。在此示例中,我不使用
nuspec
文件来打包 NuGet 包。
您可以参考此示例来设置或更新您的管道。
variables:
VerMajor: 2
VerMinor: $[counter(variables['VerMajor'], 0)]
VerPatch: $[counter('VP', 1)]
Package_Version: $(VerMajor).$(VerMinor).$(VerPatch)
jobs:
- job: buildAndPublish
displayName: 'Build and Publish NuGet Package'
steps:
# Build and pack the NuGet package with the auto-generated version number.
- task: DotNetCoreCLI@2
displayName: 'dotnet pack'
inputs:
command: pack
packagesToPack: MathCalc/MathCalc.csproj
packDirectory: '$(Build.ArtifactStagingDirectory)/MathCalc'
versioningScheme: byEnvVar
versionEnvVar: 'PACKAGE_VERSION'
# Publish the packed NuGet package (.nupkg) to Azure Artifacts feed.
- task: DotNetCoreCLI@2
displayName: 'dotnet push'
inputs:
command: push
packagesToPush: '$(Build.ArtifactStagingDirectory)/MathCalc/*.nupkg'
publishVstsFeed: 'MyFeed'