说明:本文中,“构建”“持续构建”“编译”“生成”的用法并不严谨,大概知道是什么意思就行。
首先说明,持续构建的话,是需要用到命令行的。
但dotnet core的命令似乎比dotnet framework的项目要简单一点。
因为dotnetcore 的构建命令是 dotnet msbuild xxxxx.csproj/yyyyy.sln
而 dotnet framework的构建命令是 .../msbuild.exe xxxx.csproj/yyyyy.sln
,而其中最让人(主要是没掉过坑的人,掉过就好了)困惑的是这个msbuild.exe
究竟是哪里的msbuild.exe
?毕竟windows中安装了dotnet framework SDK 或者不同版本的visual studio之后,是会有很多的msbuild.exe
的,让人不明白究竟该用哪个而已。
下面开始讲解在windows中如何构建一个 dotnet framework 项目,其中为了不让项目本身的复杂度影响了主体思路,这里就认为是要构建的是一个类似于 Hello World
的简单控制台项目。
综上,环境:
开发机,windows pc;
发布机器,windows server;
项目,一个简单的dot net framework 控制台项目。(我这里使用了4.5.2版本)
上
- 开发机上新建项目,最好是用代码管理如git初始化,使得项目可以在其他机器上在有网的情况下可以clone得到。
- 开发机上随便在项目里写点什么,只要能编译通过就行。比如
hello world
。
另外,建议项目中添加一点对于nuget包的依赖,随便选点什么,比如 log4net引用。 - 在开发机上尝试编译项目。
(经过多次尝试,确认了命令行编译项目时候应该使用C:windowsMicrosoft .NETFrameworkv4.xxxmsbuild.exe
这个msbuild.exe。不过具体还是根据项目类型,选择是Framework64还是不带64,是v4.xxx还是3.x,2.x,这个意思很简单,看不懂就没救了)
如果项目在C:projects est 路径下,那么编译的命令应该是
C:windowsMicrosoft .NETFrameworkv4.xxxmsbuild.exe C:projects est est.sln
或者
当然可能还需要带 诸如 /p:Configuration=Release /p:plotform="Any CPU"等其余参数,自己看情况办。
4. 在测试机上,git clone项目,并用同样命令尝试编译项目。
5. 如果不成功, 就要不断尝试正确的msbuild.exe 和路径,参数等,只要环境没有问题,就一定可以成功。
6. 但是,这里一个非常让人抓狂的问题来了,nuget依赖怎么办呢?现在我编译没有明显问题,只是我怎么知道该到哪去找nuget包呢?
这个问题就卡了我很久。
上nuget官网,下载nuget.exe文件。
经尝试,这个文件放在项目中(即跟sln或者csproj文件同级的目录下,执行 nuget.exe restore 命令,则可获取到需要的nuget包。这也就是我经过多次尝试后得到的经验)
那么,你可以在脚本中添加操作,每次都执行nuget.exe restore命令。
也可以将nuget.exe添加到环境变量(不解释),然后每次都执行,这样会方便一点。
7.最后再测试,发现发布机器上通过这样的操作和命令,完全可以成功编译项目。
这离最终的成功已经很近了。
实际上,对于理解何为jekins的人来说,这件事到这里就已经完毕了,剩下的都可以自己完成。
下
1.上jekins官网,下载,安装,启动jekins,注册账户,不解释。dotnet 项目则需要安装msbuild ,mstest ,mstestrunner插件。
2.jenkins全局配置msbuild。
3. 新建项目,配置项目
4. 构建项目。
基本上构建成功,不成功也好排查。
其实关于jekins的使用,更多的一共是自己学习,多次尝试,才能明白。
这其实是一篇信息量很大的博文,先暂时记录一下,以后有机会再整理。没有机会就这样了。
补充:
1.如果开发机用VS可以编译成功,但命令行中提示有不支持的语法。
那么可能是开发机用了更高级的语法规则编译(尽管项目是基于.net framework 4.5.2的),比如用了C#6.0
而发布机器只安装了.net framework 4.5.2,那么就不支持有些最新的语法。
所以在这种情况下,在发布机器上安装最新的sdk。
如图。
微软官网SDK下载 下载相应的SDK即可。
SDK里面已经包含了Runtime。
2.如果Jekins的Job里需要用到windows的bat命令进行一系列操作,那么使用Jenkins的“ 参阅 可用环境变量列表 ” 会有一定帮助。
写法如 “%WORKSPACE%”
3.如果路径中有空格,如 C:Program Files (x86)Microsoft.NET
,则有必要在变量两边都加上双引号。
如:
本文摘自 :https://blog.51cto.com/u