- 📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!
- 📢本文作者:由webmote 原创
- 📢作者格言:新的征程,我们面对的不是技术而是人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !
序言
当一根根白发慢慢的爬到我的头上的时候,我敲击键盘的手,也没有20年前那么麻利而迅速了。人谁能摆脱岁月的杀猪刀,而这把杀猪刀对码农来说,看起来格外的锋利。
还记得第一次面对电脑时的兴奋劲吗?还记得第一次玩电脑游戏时的开心吗?
是啊,时光飞逝,那个属于你我他的青葱岁月,终将离我们而去。而我们依然需要在滚滚红尘中努力走好自己的路,作为码农,依然需要双手敲击键盘,码下多年后回头不忍目睹的一行行代码…
1. 那个自动化,你别走
每次看到同事们,辛苦的编译和发布代码,我都忍不住默默打开我的电脑,远程到服务器上,静静的安装最古老而又最勤恳可靠的Jenkins。
多年之前,我已经习惯了打开Jenkins的丑陋界面,打开我的项目,然后点击Build。
而多年之后,我又一次面对Jenkins,这次竟然是闪闪发光的老头。
时间到底做了什么?
是不是每次点击Build的时候,我们都双手合十,在心中静静的祷告,祈求上天怜悯,让我们一次通过编译和发布?
我不知道是什么原因,不过这也不是我们Care的点。
2. 怎么编译.Net framework的项目?
- 编译.net framework的项目,最简单而直接的命令就是msbuild了。
- 那么怎么拥有msbuild呢?最简单的方法就是安装ms visual studio,应该不会有更简单而不易出错的办法了吧!
- 怎么使用nuget?我的建议是直接下载nuget,放在系统盘里,这样每个地方都可以调用它了。
- 怎么编译具体的.net framework项目呢?让我们先描述以下步骤吧,先使用nuget复原所有的项目包,然后调用msbuild进行编译,然后打包输出,让我们show下代码。
# 以下都是powershell脚本
nuget.exe restore SCPlatformApiServer.sln
$msbuild="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\bin\msbuild.exe"
&$msbuild "abc.sln" /t:Build /verbosity:normal /p:Configuration=Release /nr:false /clp:ErrorsOnly
if ($LastExitCode -eq 0){
echo "build 通过!"
}
else{
echo '失败!'
exit 1
}
机智如我,使用LastExitCode
来判断执行是否成功。
那么,真正的问题来了,怎么编译一个.net framework 的web项目呢?
3. 怎么编译.Net framework的Web项目?
这个问题,如果细细追究确实非常复杂。
web项目不仅仅包含编译的bin下的目录文件,它还包含网页/js/资源/global.asax/webconfig等一系列的文件,我们采用上述方案编译后,立即获得了一个bin目录。
除此之外,并没有其他程序,如果直接分发,则iis都拉不起来这个web程序。
这里,我们必须请求大神DeployOnBuild
,搜索微软网站,可以找到类似的介绍。
当然,它有个前提条件,请检查你的web项目的项目文件,看看是否包含如下语句:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v17.0\WebApplications\Microsoft.WebApplication.targets" Condition="true"/>
如果没有,那么手工补上去也是可以的。
好了,有了这个发布的支撑,我们可以开心的玩了。
# 以下都是powershell脚本
nuget.exe restore abc.sln
$msbuild="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\bin\msbuild.exe"
&$msbuild ".abc/abc.csproj" /p:DeployOnBuild=true -restore /p:OutDir="$ENV:WORKSPACE/Bin" /verbosity:normal /p:Configuration=Release /nr:false /clp:ErrorsOnly
if ($LastExitCode -eq 0){
echo "build 通过!"
}
else{
echo '失败!'
exit 1
}
忽略里面的/p:OutDir参数吧,这个目录只有dll,真不行。
然后看看我的打包脚本吧。
# 以下都是powershell脚本
$outdir="$ENV:WORKSPACE/Bin/_PublishedWebsites/SCPlatformApiServer/"
Compress-Archive -Path "$outdir" -DestinationPath "$ENV:WORKSPACE/abc$ENV:BUILD_NUMBER.zip"
Write-Output "修改和打包结束."
打包的内容如下:
复制到网站目录,即可运行!
每当你做成一件事情的时候,心中总会升起一股暖流,也许这就是我们努力的理由!
结语
Jenkins是个非常好的工具,不过自从用了gitlab的ci后,这个用途越来越少了。
👓都看到这了,还在乎点个赞吗?
👓都点赞了,还在乎一个收藏吗?文章来源:https://www.toymoban.com/news/detail-518773.html
👓都收藏了,还在乎一个评论吗?文章来源地址https://www.toymoban.com/news/detail-518773.html
到了这里,关于翻过那座山——Jenkins编译发布web程序(.net framework web application)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!