安装 Windows下安装 要安装TeamCity很简单,首先到下载页面下载TeamCity,由于这里我用的是Windows系统,所以下载Windows版本的安装包。下载完成之后安装即可。...第一次使用需要配置用户并初始化,之后稍微等待一段时间即可。 之后应该会看到类似的界面,这样TeamCity就安装好了。当然我新建了两个项目,所以实际的界面可能会有所差别。 ?...特别要说一下,TeamCity的免费版本只能支持20个构建步骤,所以如果需要用到更多配置的话就需要付费购买商业版了。 另外从这里就可以看出构建工具的重要性。...首先考虑到项目中可能使用多种第三方库,而在.NET平台下第三方库一般都是用NuGet获取。所以我们需要添加一个NuGet步骤。...当然TeamCity也支持自动构建,默认情况下每个项目都会添加一个触发器,当项目所在的版本控制系统更新的时候触发构建。当然这个条件也是可以修改的。
Cake是C# Make的缩写,是一个基于C# DSL的自动化构建系统。它可以用来编译代码,复制文件以及文件夹,运行单元测试,压缩文件以及构建Nuget包等等。...可靠的:可以建立在自己的机器上,也可以建立在像AppVeyor,TeamCity,TFS,VSTS或Jenkins这样的CI系统上,都可以以相同的方式运行。...原因是我的一个Demo.Tests这个项目引用了xUnit的包,MSBuild没能正确的还原nuget包,这不知道算不算一个bug,笔者之前用 Cake的MSBuild来build vs2015的项目的时候是没有问题的...不过也正好,我们再用Cake来写一个还原nuget包的task。...例如前些日子我的一个web的demo项目(https://github.com/linianhui/Ids3.demo)使用cake来部署iis站点。 3.
在有关TeamCity vs.Jenkins的这篇文章中,我试图帮助您选择适合您需要的正确CI / CD工具。在开始进行TeamCity与Jenkins的比较之前,我将从CI / CD的基础知识开始。...除了使用本机安装软件包进行安装外,还可以将其作为Docker或独立安装在已安装JRE(Java运行时环境)的任何计算机上。 詹金斯(Jenkins)项目产生两条发布线–每周和长期支持(LTS)。...有关TeamCity与云(IAAS)解决方案集成的详细信息。 除了云集成,它支持与码头工人,Maven的,Visual Studio团队服务,的NuGet,VCS托管服务,并重点整合更多。...8.托管 TeamCity仅在本地版本中可用。如果打算像在自托管服务器上那样设置TeamCity,则可以使用反向代理(Nginx)进行相同的操作。...答案应该与您的期望(从工具本身)和总体项目要求(包括预算)一起划掉。 总而言之 我详细介绍了两种流行的CI / CD工具-Jenkins和TeamCity。
此时遇到的问题是,如何在 GitHub 上执行打包,打包的时候如何指定 NuGet 包的版本号。...因为 CBB 的特殊性,我要求每个 NuGet 正式发布的包都应该有一个对应的 Tag 号,这样将 NuGet 库安装到项目里面,之后发现问题了还能找到对应版本的代码 在阅读本文之前,期望小伙伴能了解如何在...>1.0.0 此时的版本号可以自由填写,这样就能解决本地打 NuGet 包指定版本号的问题 对于其他开发者,只有看到这个...同时解决了手动叫开发者打 NuGet 包的时候需要记得添加 Tag 号 在调试对应版本的 NuGet 的代码的时候,我推荐使用以下方法 Roslyn 让 VisualStudio 急速调试底层库方法 VS...DLL引用替换插件 当前 Gitlab 上也可以使用此方法,请看 dotnet 配合 Gitlab 做自动推 Tag 时打包 NuGet 包 另外我开源了一个构建工具集,请看 dotnetcampus.DotNETBuildSDK
本文告诉大家如何做源代码包,源代码包的意思是安装的包不是安装dll的方式,而是使用源代码的方式。...但是写一个手动打包的 Nuget 程序会占用本文太多的内容,所以我就不使用任何的代码进行打包,使用一步步告诉大家如何打包 nuget 的方法。...或 记事本,用来编辑文件 文件夹方式 一个可以解析的 nuget 包是需要包括指定的一些文件的,最主要就是.nuspec文件,其他的文件都不是必要的 下面来告诉大家做一个空白的 nuget 包 创建空白的...nuget 包 首先创建一个空白文件,文件的后缀名是 nuspec ,文件名就是打包名 下面我创建 lindexi.nuspec 这个将会打出空白的 nuget 包 使用 SublimeText 打开...设置包所在的路径,设置的方法我就不在这里告诉大家了,因为这时入门就需要知道的 ?
此时遇到的问题是,如何在 Gitlab 上执行打包,打包的时候如何指定 NuGet 包的版本号。...因为 CBB 的特殊性,我要求每个 NuGet 正式发布的包都应该有一个对应的 Tag 号,这样将 NuGet 库安装到项目里面,之后发现问题了还能找到对应版本的代码 本文告诉大家如何配合 Gitlab...因为是内部用的模版我也没有打算开源 通过三个步骤能使用 dotnetCampus.TagToVersion 这个工具,这个工具能解决在本地打出 NuGet 包的版本号问题,能解决带 v 的特殊的 Tag...>1.0.0 此时的版本号可以自由填写,这样就能解决本地打 NuGet 包指定版本号的问题。...同时解决了手动叫开发者打 NuGet 包的时候需要记得添加 Tag 号 在调试对应版本的 NuGet 的代码的时候,我推荐使用以下方法 Roslyn 让 VisualStudio 急速调试底层库方法 VS
本文告诉大家如何使用 WriteLinesToFile 先把参数写入文件,通过文件的方式传输参数 Roslyn 获得 sln 文件所在的文件夹 我找了很久没有发现 SolutionDir 这个定义,所以只能通过一个不通用的方法找到...在之前的项目可以使用 PreBuildEvent 的方式指定编译之前事件,新的项目格式也可以支持这个方法,只是支持不是很好 我就遇到在 Jenkins 无法编译通过,因为 PreBuildEvent...Roslyn 如何使用 MSBuild Copy 复制文件 本文告诉大家如何在 MSBuild 里使用 Copy 复制文件 Roslyn 使用 Target 替换占位符方式生成 nuget 打包 本文告诉大家如何编写在编译过程修改打包文件...Roslyn 如何基于 Microsoft.NET.Sdk 制作源代码包 本文告诉大家如何做源代码包,源代码包的意思是安装的包不是安装dll的方式,而是使用源代码的方式。...,在开一个新的项目的时候经常需要添加公司,版权等,但是这些信息不想每次都添加于是我就想用 Nuget 管理所有配置,安装一个 nuget 就自动配置 Roslyn 如何在 Target 引用 xaml
本文来告诉大家如何根据 基线包版本 的功能来实现自动在构建过程中,告诉开发者,当前版本是否存在不兼容旧版本的变更。其不兼容变更包括二进制中断变更和 API 不兼容变更和源代码中断变更。...本文将告诉大家如何使用 EnablePackageValidation 和 PackageValidationBaselineVersion 功能,自动让构建工具告诉开发者当前的更改是否存在不兼容的更改...,还请让我用一个例子来告诉大家。...1.0.2 即可采用此指定的版本进行基线包版本对比。...1.0.2 版本 原理 此功能是依托于 NuGet 包发布而拿到指定版本号规则的,和 使用基于 Roslyn 的 Microsoft.CodeAnalysis.PublicApiAnalyzers 来追踪项目的
但这么做会中止当前实例的运行,并将其替换为新版本,因此会有一些服务停止时间。然而,Cloud Foundry PaaS云平台使得通过命令行接口来进行蓝绿部署变得非常容易。...基于以上操作,现在我仍然会通过应用市场来使用ClearDB,但在配置中我会指定连接细节。...8、其他服务 我还使用过一段时间的Pivotal SSL Service,用来上传SSL证书。当它与Cloud Foundry路由器同时工作,就可以通过一个有效的SSL证书为指定域名提供流量服务。...这个过程使用了Cloud Foundry路由器,它可以实现对访问当前运行程序的URL的配置。 如果这一切都成功了,那么应用程序的前一个版本就会被删除。整个构建过程只需要不到10分钟。...如果你感兴趣,这里还有一些关于如何进行蓝绿部署的内容。 将实时URL切换到应用程序新版本的这个过程,是允许“零停机时间(zero-downtime)”部署的。
在上一篇博客告诉小伙伴如何使用 github 做持续集成,本文告诉大家如何配置 github 让在 master 每次合并都会自动创建一个 nuget 文件,自动上传 在 github 的 action...功能可以很方便创建打包任务,但是没有很方便进行 nuget 上传,需要额外写一点代码 全部的源代码请看 github 如果发现有坑请邮件告诉我 创建配置文件 在上一篇博客告诉小伙伴在 .github/...build: 通过 runs-on 属性可以指定在哪个环境运行,如在 windows 的最新版本运行 jobs: build: runs-on: windows-latest 切换分支 接下来就是打包步骤...,同时跳过已经上传的版本 而刚才没有配置 nuget.org 的源,需要使用这个代码上传 ....上面的代码在 SourceYard 使用,这是我开源的项目,支持制作源代码的 nuget 库文件。
在上一篇博客告诉了大家如何让 GitHub 的 Action 协助咱构建 WPF 官方源代码,但是上一篇博客只是构建成功而已,构建的输出内容还是拿不到。...本文将告诉大家如何让 WPF 框架的源代码构建之后输出到私有的 NuGet 源上,方便构建出私有分支版本 在上一篇博客 手把手教你如何构建 WPF 官方开源框架源代码 告诉大家为什么我推荐使用 GitHub...基类的构造函数写出下面代码 Console.WriteLine("林德熙是逗比"); 这个版本的 WPF 框架只能做私有发布了,在 手把手教你如何构建 WPF 官方开源框架源代码 告诉大家如何进行构建...,那么现在就需要将构建完成的 NuGet 库发布到私有仓库里面 我推荐使用 myget 这个免费的私有的仓库,这个免费的仓库允许上传私有的 nuget 库,创建自己的私有源 打开 https://www.myget.org...大概就是存放输出文件的功能,这个功能可以将某个输出的文件夹压缩为 zip 包存储起来的功能,因为是将文件夹压缩为 zip 的,就不需要处理单独的某个包,也和具体的输出格式没有关系 使用方法是将上面的 NuGet
本文将从持续集成的角度来说语义版本号,告诉大家如何自动生成包含语义的版本号,并在发布库时采用。 ---- This post is written in multiple languages....从实际寻找来看,这似乎也是唯一一个能够让 NuGet 包支持语义版本号的工具。 去 NuGet.org 上为我们的库项目安装 GitVersionTask 即可开始我们的语义版本号。...的 Tag,那么现在将打出 1.2.1 的包来(无论此分支当前距离那个 Tag 有多少个提交,都只加 1) None 如果此前在 Git 仓库此分支前有一个 1.2.0 的 Tag,那么现在将打出 1.2.0...注意我在全局配置中加了一个 source-branches 配置,用于指定如果要自动寻找来源分支,请去这个集合中指定的分支名称里找。 下图是 release 分支上打包的版本号。 ?...但是,我们需要学习如何充分利用这样的分支流,以便让语义版本号充分发挥它的作用。 假设:我们最近发布了 1.1.0 正式版。
在当前所有渲染框架里面,做 2D 渲染的,最好的框架是 Win2d 这个提供了大量底层接口封装,不仅性能高同时接口设计非常好 在很久之前,只有在 UWP 等现代应用才能使用 Win2d 而 WPF 是不能使用的...好在微软开放了一些黑科技,可以在 WPF 上使用 Win2d 渲染,下面就让我告诉大家如何在 WPF 上使用 在 2019年7月03日 这个技术还是属于黑科技,还没有正式发布,在开始使用之前,有一定的环境要求...Win2d 顺便还提供了亚克力的功能 其实本文主要不是告诉大家如何写代码,而是如何让官方的代码可以运行 在运行过程可能会遇到以下的坑 如在开始编译的时候提示下面代码 C:\Users\lindexi.github.io...(异常来自 HRESULT:0x8007007E)” 这个问题是在输出文件夹缺少文件,请确定当前使用的是 x64 的设备,同时进行 AnyCpu 编译,没有勾选首选 32 的程序 然后确定在 bin\debug...文件复制到输出文件夹 请将上面文件夹的用户名替换为你自己的用户名 当然这样的呆魔大家一定不想使用,于是我将需要添加的文件放在项目文件,设置自动输出,请小伙伴换我的项目试试 我将代码放在 Github
从运维角度,可在不影响老版本的情况下发布新版本,可统一管理公司各个项目中组件版本不一和各个版本组件的使用情况,减少故障发生以并使得项目稳定运行。...默认情况下,它们在当前目录的 obj 目录。 -c, --configuration [Debug|Release] 当生成项目时使用的配置。如果没有指定,将默认为 “Debug”。...dotnet pack --output nupkgs 打包当前的应用程序,并将生成的包放置到指定的文件夹中。...dotnet pack --no-build --output nupkgs 打包当前的项目到指定的文件夹中,并跳过生成步骤 回到我们在.NET Core系列 :3 、使用多个项目 创建的类库项目DotnetNewLib...这意味着,我们 NuGet 包只适用于.Net Core 应用程序 针对 NetStandard1.6 (和即将到来的 4.6.3),文章 拥抱.NET Core,如何开发一个跨平台类库 (1) 对Nuget
本文告诉大家如何编写在编译过程修改打包文件 在项目文件的相同文件夹可以放一个 nuspec 用来告诉 VisualStudio 如何打包 现在尝试创建一个项目 NearjerbetearDeeyitoo...,在这个项目用来告诉大家如何使用替换占位符的方法 在开始做之前需要告诉大家为什么需要使用这个方法 因为写的 nuspec 文件是可以保持不动,在多个项目使用相同的一个 nuspec 文件,但是对不同的项目使用定制的方式...PackageId 实际上是我随意给的,大家可以替换PackageId为自己喜欢的字符串。...在NuspecFile就需要指定nuspec文件所在的路径,这里用的是相对的路径。最后设置IsTool只是用来告诉安装 Nuget 的程序,这是一个工具 nuget 包没有引用。...上面代码有 id 和版本都使用占位符,下面就来写 target 来替换两个占位符为项目需要的字符。
本文来告诉大家如何用 Roslyn 管理配置,在开一个新的项目的时候经常需要添加公司,版权等,但是这些信息不想每次都添加于是我就想用 Nuget 管理所有配置,安装一个 nuget 就自动配置 我在公司很久都没开发过业务...,是不是公司名没写对 最近我学到 Roslyn 的方法,通过 Nuget 添加配置,下面让我手把手告诉大家如何做一个配置。...在上一篇文章Roslyn 通过 nuget 统一管理信息告诉了大家如何通过手动写文件的方式做一个 nuget 包,本文来告诉大家通过 VisualStudio 创建工程的方式打包。...现在可以通过安装这个 nuget 包的方式,测试这个包是否可以使用。...当前现在还没做完,如果这时创建了一个 dotnet framework 4.5 的项目,会发现这个包无法安装,因为这个包的依赖是 dotnet core 2.1 ,所以需要添加一些代码让这个包可以在 dotnet
本文告诉大家如何通过 msbuild 编译一个项目,通过命令行编译可以输出更多的编译信息,可以用来调试自己写的编译相关方法,可以看到是哪个文件编译失败 在开始菜单可以找到 VisualStudio 的安装文件夹...需要先通过 cd 将命令行的工作路径修改为当前需要编译的路径,通过下面命令可以从 C 盘到代码文件夹 > cd /d 代码所在文件夹 ?...对于一个新的仓库,首先需要还原所有安装的 Nuget 包,此时建议将 Nuget 这个程序加入到环境变量,可以从 官网 下载最新版本的 Nuget 程序,如我下载了 5.0 的版本,我将下载的 Nuget...(如果现在还有开发者使用的是 Windows7 那么请自己百度如何将某个文件夹添加到环境变量)点击高级系统设置 在系统属性页面点击高级,找到环境变量按钮 ?...还原请使用下面代码 > nuget restore 这个命令可以在 sln 文件所在的文件夹输入,也可以在 nuget.package 文件所在的文件夹里面输入,一个是还原所有项目的 nuget 一个是还原一个项目的
使用外部服务将帮助您避免陷阱,例如您的服务器IP被反垃圾邮件服务列入黑名单。 在本教程中,我们将讨论如何将FreeBSD的内置Sendmail服务连接到SendGrid以从服务器发送电子邮件。...没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。...熟悉如何从命令行编辑文本文件 您应该安装自己喜欢的文本编辑器,例如nano或vim 用于测试目的的免费SendGrid帐户,或为您提供服务的SMTP详细信息的其他邮件提供程序。...echo 'WITH_PKGNG=yes' >> /etc/make.conf 步骤2 - 安装和配置SASL包 使用我们新安装的Portmaster实用程序,cyrus-sasl2使用以下命令编译和安装软件包...我们在这里做的是告诉系统使用我们新的安全和登录要求重新编译(或重建)内置的Sendmail包,然后重新安装Sendmail。
点击安全设置下的本地策略,展开本地策略点击用户权限分配,找到右侧作为服务登录 双击添加用户或组将刚才 --user 使用的用户添加 这个用户就作为服务登录,因为我是在虚拟机使用,所以我可以将当前用户作为服务登录...不过如果在开发设备上,也可以这样设置,此时可以模拟一些有趣的用户环境,找到一些有趣的坑 但我现在也遇到以下问题: 如何将 CI 打包推送的 NuGet 包和源仓库的 Tag 关联起来,作为需要维护一个有历史的...我用到了一个 NuGet 包,我发现这个包有问题,我如何拿到这个包的代码?这是最大的坑。...于是我就有以下问题 是否应该在 CI 自动推送 NuGet 包时,自动给源仓库打一个 Tag 号 如果 CI 适合给源仓库打一个 Tag 号,那么这个 Tag 应该如何做 是否应该放在 git 的 Hook...是否应该在手动推 Tag 时触发打包,那么这个手动推的 Tag 如何关联到 NuGet 版本号 最好不要写脚本,因为脚本写起来只有了解版本的小伙伴才能了解,基本上不可维护,除非只是调用这个命令行
本文告诉大家通过命令行获取 Nuget 的版本号 在 Nuget 中没有 -version 和 -v 和 --version 等写法,只需要直接输入 nuget 在第一行就会显示版本号 nuget NuGet...install 使用指定的源安装程序包。如果未指定源,则将使用 NuGet 配置文件中定义的所有源。如果配置文件未指定源,则使用默认的 NuGet 源。...list 显示给定源中的程序包列表。如果未指定源,则使用 %AppData%\NuGet\NuGet.config 中定义的所有源。...如果 NuGet.config 未指定源,则使用默认 NuGet 源。...pack 基于指定的 nuspec 或项目文件创建 NuGet 程序包。 push 将程序包推送到服务器并进行发布。
领取专属 10元无门槛券
手把手带您无忧上云