Visual Studio 2022 向 dotnet cli 发布操作的自动化值得称赞

Automation of Visual Studio 2022 publish action to dotnet cli commends

提问人:YesWoman 提问时间:11/10/2023 最后编辑:PMFYesWoman 更新时间:11/10/2023 访问量:25

问:

聪明人!我正在尝试使用 dotnet cli 从 Visual Studio 构建 Jenkis 管道自动发布步骤。

首先,关于VS中的发布步骤,他们按选项发布,然后选择所有标志。所有标志

在 jenkins 中,我运行:

bat "\"${env:nugetExeFile}\" restore \"${env:slnfile}\""

bat `\"${env:dotnet}\" publish -c Release -r win-x86 --framework net6.0 --self-contained true -p:PublishSingleFile=true -p:IncludeAllContentForSelfExtract=true`

目前我得到了一个.sln文件和一个.csproj 其余的 .csproj 项目是

在 VS 代码中,有一个标志“在发布之前删除所有现有文件”我也想添加它,但我找不到它。

当我使用 WinMerge 比较生成的二进制文件时,它们完全不同。提前非常感谢您!

我试图在之前指定.sln文件和.pubxml文件和csproj,但总是出现错误并且文件没有自行发布。现在仍然有一个错误,但文件确实在 bin/release/path 中发布。

错误消息:错误 NETSDK1099:仅可执行应用程序支持发布到单个文件

.NET 可视化工作室 MSBuild

评论


答:

0赞 PMF 11/10/2023 #1

使用 时需要指定目标 csproj,否则您将获得相当不确定的行为,因为 publish 在库上没有意义。dotnet publish

二进制文件上的 WinMerge(或 diff)是无用的,除非您确切知道要查找的内容。Dll 和 exe 文件在生成之间总是不同的,因为它们具有编码的时间戳。

与其要求“在发布之前删除所有现有文件”,不如确保每次都启动干净的构建。我敢肯定有一个 jenkins 设置可以做到这一点。作为解决方法,您也可以在构建开始时调用。git clean -dfx

评论

0赞 YesWoman 11/10/2023
成功了!谢谢!
0赞 PMF 11/10/2023
如果解决方案适合您,请不要忘记接受答案(单击答案左侧的小复选标记)