[英]nuget package deploy with VisualStudio publish vs. msbuild publish
我正在尝试将 a.netstandard2.0 class 库 nuget 部署到本地文件夹存储库(在 FolderProfile.pubxml 中指定)。 这可以通过 VisualStudio 对项目的发布上下文操作正常工作:幕后过程根据项目.csproj 构建项目并打包所需项目,然后根据 FolderProfile.pubxml 复制 nuget package。 我预计这也可以通过 msbuild 实现(用于脚本)。
msbuild /t:Publish /p:PublishProfile=FolderProfile.pubxml
这将构建项目并将 bin/ Debug.ne tstandard2.0 的内容复制到本地文件夹存储库。 不幸的是,这与要求的不同,PublishProfile 指定发布配置和项目.csproj 明确指出要打包的 just.dll(既不是.deps.json 也不是.pdb)
msbuild /t:Pack
根据项目.csproj 打包 nuget 内容,但将 package 留在 bin/ Debug中。
切换到 Release 可以通过/p:Configuration=Release
实现,但这仍然不足以达到预期的效果。
我创建了一个简单的演示项目,可在https://github.com/JanCervak/NugetPublishDifferenceRepro获得,本地文件夹存储库设置为 %TEMP%
使用 VS 2019 16.8.3
class 库项目的 VS IDE 的发布按钮是msbuild -t:pack
而不是msbuild -t:publish
。
在VS IDE上,当您单击 lib 项目的发布按钮时,它实际上会执行打包按钮以创建从pubxml
文件读取的 nuget 包。 它是VS IDE的特殊功能,是由VS IDE中的集成任务、工具引起的。换句话说,它是由那个设计的。 针对不同的 vs 项目, Publish Button 的作用不同。
但是,当您使用msbuild -t:publish
命令行中的 lib 项目时,它摆脱了 VS IDE 环境,它像 web 项目、windows 项目一样执行 function。(将最终的 88343718 文件放入自定义发布文件夹) .
因此,如果你想对 lib 项目使用与VS IDE相同的命令 function,你应该放弃pubxml
文件并使用此命令:
msbuild NugetPublishDifferenceRepro.csproj -t:pack -p:Configuration=Release;Platform=AnyCPU;PackageOutputPath=%Temp%
PackageOutputPath
用于pack target,指定生成的路径 nuget package。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.