nuget 包部署与 VisualStudio 发布与 msbuild 发布
nuget package deploy with VisualStudio publish vs. msbuild publish
我正在尝试将 netstandard2.0 class 库 nuget 部署到本地文件夹存储库(在 FolderProfile.pubxml 中指定)。这可以通过 VisualStudio 对项目的发布上下文操作正常工作:幕后过程根据 project.csproj 构建项目并打包所需项目,然后根据 [=38 复制 nuget 包=].我预计这也可以通过 msbuild 实现(用于脚本)。
msbuild /t:Publish /p:PublishProfile=FolderProfile.pubxml
这将构建项目并将 bin/Debug/netstandard2.0 的内容复制到本地文件夹存储库。不幸的是,这与要求的有所不同,PublishProfile 指定了 Release 配置和 project.csproj 明确指出要打包的只是 .dll(既不是 .deps.json 也不是 .pdb)
msbuild /t:Pack
根据 project.csproj 打包 nuget 内容,但将包留在 bin/Debug.
切换到发布可以通过 /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 项目的 Publish 按钮时,它实际上会 Pack 按钮创建从 pubxml
文件中读取的 nuget 包。这是 VS IDE 的特殊功能,是由 VS IDE 集成的任务和工具引起的。换句话说,它是由那个设计的。
对于不同的vs项目,发布按钮有不同的功能。
但是,当您从命令行为 lib 项目使用 msbuild -t:publish
时,它摆脱了 VS IDE 环境,它的功能类似于Web 项目,windows 个项目。(将最终输出文件放入自定义发布文件夹)。
所以如果你想使用与VS IDE功能相同的命令用于lib项目,你应该放弃 pubxml
文件并使用此命令:
msbuild NugetPublishDifferenceRepro.csproj -t:pack -p:Configuration=Release;Platform=AnyCPU;PackageOutputPath=%Temp%
PackageOutputPath
是pack target,指定生成的nuget包的路径。
我正在尝试将 netstandard2.0 class 库 nuget 部署到本地文件夹存储库(在 FolderProfile.pubxml 中指定)。这可以通过 VisualStudio 对项目的发布上下文操作正常工作:幕后过程根据 project.csproj 构建项目并打包所需项目,然后根据 [=38 复制 nuget 包=].我预计这也可以通过 msbuild 实现(用于脚本)。
msbuild /t:Publish /p:PublishProfile=FolderProfile.pubxml
这将构建项目并将 bin/Debug/netstandard2.0 的内容复制到本地文件夹存储库。不幸的是,这与要求的有所不同,PublishProfile 指定了 Release 配置和 project.csproj 明确指出要打包的只是 .dll(既不是 .deps.json 也不是 .pdb)
msbuild /t:Pack
根据 project.csproj 打包 nuget 内容,但将包留在 bin/Debug.
切换到发布可以通过 /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 项目的 Publish 按钮时,它实际上会 Pack 按钮创建从 pubxml
文件中读取的 nuget 包。这是 VS IDE 的特殊功能,是由 VS IDE 集成的任务和工具引起的。换句话说,它是由那个设计的。
对于不同的vs项目,发布按钮有不同的功能。
但是,当您从命令行为 lib 项目使用 msbuild -t:publish
时,它摆脱了 VS IDE 环境,它的功能类似于Web 项目,windows 个项目。(将最终输出文件放入自定义发布文件夹)。
所以如果你想使用与VS IDE功能相同的命令用于lib项目,你应该放弃 pubxml
文件并使用此命令:
msbuild NugetPublishDifferenceRepro.csproj -t:pack -p:Configuration=Release;Platform=AnyCPU;PackageOutputPath=%Temp%
PackageOutputPath
是pack target,指定生成的nuget包的路径。