繁体   English   中英

nuget package 使用 VisualStudio 部署发布与 msbuild 发布

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM