svn协同开发下之dll版本管理最佳实践。svn协同开发下的dll版本管理最佳实践。

就会发生版本冲突导致致命bug,就会发生版本冲突导致致命bug

 

 

   
作为一如既往号称开发人员,常常遇到的一个题目是,当以svn签来一致客最新代码时,经常不能够一如既往不善编译通过,导致消费大量岁月去解决编译问题,这里碰到的题材一般可分为三类:

   
作为同名开发人员,常常遇到的一个题目是,当以svn签来一致卖最新代码时,经常不能够一如既往次编译通过,导致消费大量日子错开化解编译问题,这里碰到的题材一般可以分成三类:

1.
由提交代码的开发人员失误,忘记提交本地转移的公文要少提交,特别是croj或sln项目和新增长的文书,因为新长的文书在svn下默认是?状态的,这或多或少以来,只能借助开发人员自己精心解决;

1.
出于提交代码的开发人员失误,忘记提交本地转移的文件或者丢失提交,特别是croj或sln项目与初增长的文本,因为新长的公文于svn下默认是?状态的,这一点的话,只能依靠开发人员自己仔仔细细解决;

2.
由于引用版本不等同,或本更新,开发时俩独开发人员的编译调试,甚至本地测试都未会见生问题,但是当得发布测试版本要宣布暨生产条件时,就会见来版本冲突导致致命bug,也许是bug还是一个隐形bug,很为难发现或捕获;

2.
是因为引用版本不均等,或本更新,开发时俩只开发人员的编译调试,甚至本地测试都无见面生题目,但是当用披露测试版本要发布暨生育环境时,就会有版本冲突造成致命bug,也许这个bug还是一个隐形bug,很麻烦发现还是捕获;

仲沾往往是沉重之,因为以飞中,提倡的凡尽快暴露问题并缓解,那么来无发出一致种植艺术或者艺术失去解决他,或规避之题目呢?答案明了是迟早的,在此间,我介绍一下时本身点到的俩种版本管理(或者第三方库的管理方案)。

仲触及往往是沉重之,因为以高速中,提倡的凡赶快暴露问题并缓解,那么来没产生相同种植艺术或者方式失去化解他,或规避之问题吧?答案明了是早晚之,在此间,我介绍一下脚下自点到的俩种版本管理(或者第三方库的军事管制方案)。

 

 

率先种是下TortoiseSVN提供的external特性,在当下之前先介绍一下,我用的svn目录结构,如下

率先栽是利用TortoiseSVN提供的external特性,在这之前先介绍一下,我利用的svn目录结构,如下

–trunk  <–开发主导

–trunk  <–开发主导

      –build <–自动化构建脚本

      –build <–自动化构建脚本

     –documents <–文档

     –documents <–文档

     –packages <–nuget包

     –packages <–nuget包

    –references <–引用

    –references <–引用

    –releases <–release版本

    –releases <–release版本

    –src <–源码

    –src <–源码

    –test <–测试用例

    –test <–测试用例

   –XXXXX.sln <– 解决方案

   –XXXXX.sln <– 解决方案

–branches  <–开发分支

–branches  <–开发分支

–tags  <–发布版

–tags  <–发布版

 我们假设A项目是框架的花色,B项目是工作代码,B项目要引用框架项目之dll,那么,A项目编译完成后,在releases里发布一个1.0.0的本子(最好应用生成事件写XCOPY脚本,这样就算无见面忘记发版本,或手动去拷贝构建的版),如下图

 我们假设A项目是框架的门类,B项目是事情代码,B项目需要引用框架项目之dll,那么,A项目编译完成后,在releases里披露一个1.0.0底版(最好使用生成事件写XCOPY脚本,这样尽管非会见遗忘发版本,或手动去拷贝构建的本),如下图

图片 1

图片 2

那,在B项目面临,我们开拓reference目录,右键,点击属性,打开属性窗体,按如下操作

那,在B项目被,我们打开reference目录,右键,点击属性,打开属性窗体,按如下操作

图片 3

图片 4

 

 

形成以后,在历次只要更新是目录,就能够立刻得得到最新的援版本,在类型文件被针对该dll进行引用,实际上引用的是对立目录,这样即使解决了为本要路径不雷同致的题目,预防这些人工的操作,可以大幅度的省我们的开支时间到实在需要解决之题目达成,我们每次签出的本为会担保可以构建成功,当然,如果你们项目正式的话,最好写上电动构建脚本,另外就是必然得得要是用神器(Jinkens),用上其,你们项目组真的克过上快和谐幸福的在。

做到后,在历次只要更新是目录,就可知马上得得到新型的援版本,在档次文件被针对该dll进行引用,实际上引用的是对立目录,这样虽缓解了为本要路径不雷同致的题材,预防这些人工的操作,可以大幅度的省我们的开发时间到实在需要解决的题目达成,我们每次签出的本子为会担保可以构建成功,当然,如果你们项目正式的话,最好写上电动构建脚本,另外就是是必定得得要用神器(Jinkens),用上其,你们项目组真的克过上快和谐幸福的生。

 

 

老二栽方式,就是利用微软公开的Nuget工具,构建地面的nuget服务器,这种方法并好一些,可以定义包对保险之靠,这样的靠关系就绝不使用者更夺管理。废话不多说,先搭建nuget服务器,具体可以看
https://www.cnblogs.com/lzrabbit/archive/2012/05/01/2477873.html
这号博主介绍得比详细。这里提及到之一点凡,在本升级时,比如开始下的凡某某包之1.0.0版,后来晋升至1.1.0版本,后来1.1.0要好再上污染了一致百分之百,但是版本号没有更换,需要去packages包里对应的1.1.0之担保,最好将地面缓存也清空一下,否则可能还是会见牵涉去1.1.0的原始本子。操作办法是,打开VS,选择菜单工具->Nuget
包管理->程序包管理器设置->常规->清空所有Nuget缓存。

其次栽办法,就是行使微软公开的Nuget工具,构建地面的nuget服务器,这种方法并好有,可以定义包对保险的依,这样的因关系就是毫无使用者更夺管理。废话不多说,先搭建nuget服务器,具体可以看
https://www.cnblogs.com/lzrabbit/archive/2012/05/01/2477873.html
这号博主介绍得较详细。这里提及到的一些凡,在本升级时,比如开始下的凡某个包之1.0.0本子,后来晋级至1.1.0本,后来1.1.0自己更上污染了扳平全勤,但是版本号没有更换,需要去packages包里对应之1.1.0之管,最好将当地缓存也清空一下,否则可能还是会见牵涉去1.1.0的原有本子。操作办法是,打开VS,选择菜单工具->Nuget
包管理->程序包管理器设置->常规->清空所有Nuget缓存。

下载https://github.com/NuGetPackageExplorer/NuGetPackageExplorer客户端包管理器并安装。

下载https://github.com/NuGetPackageExplorer/NuGetPackageExplorer客户端包管理器并安装。

  1. 打开NuGet Package Explorer

  2. 选择Create a new package

  3. 左是编辑一些特性等,右侧是填补加包文件

  1. 打开NuGet Package Explorer

  2. 选择Create a new package

  3. 左手是编一些性能等,右侧是上加包文件

4.填写入基本信息,其中Id其实是Name,就是咱们以nuget浏览器里见到底称号

4.填写入基本信息,其中Id其实是Name,就是我们当nuget浏览器里观看底号

5.以左边点击Edit
dependencies,可上加外部依赖,在下载使用时,会自动检测依赖包并下载

5.于左边点击Edit
dependencies,可补充加外部依赖,在下载使用时,会自动检测依赖包并下载

图片 5

图片 6

  1. 在右边右键,选择菜单Add a  Lib Folder,在Lib上右键,选择Add .NET
    Folder来添加对应框架的本,然后右键选择我们得加上的文件即可
  1. 在右边右键,选择菜单Add a  Lib Folder,在Lib上右键,选择Add .NET
    Folder来添加对应框架的版,然后右键选择我们需要丰富的文件即可

7.做到以下操作后,我们就算好点击最上面的File菜单,选择Publish,在弹出的窗体,配置才搭建之服务器地址PublishUrl,在脚要填Publish
Key,相当给一个密码,这个是于服务器里web.config里布置的,找到节点<add
key=”apiKey” value=”XXXXXXX”/>,将这个value复制过来即可颁发

7.形成以下操作后,我们就可以点击最上面的File菜单,选择Publish,在弹出的窗体,配置才搭建之服务器地址PublishUrl,在脚要填Publish
Key,相当给一个密码,这个是于服务器里web.config里布置的,找到节点<add
key=”apiKey” value=”XXXXXXX”/>,将以此value复制过来即可颁发

 

 

做到以上操作后,我们便曾搭建完成了俺们的地方nuget服务器了,如果已在vs中配置好了当地nuget路径,那么我们就是好用了。

好上述操作后,我们便曾搭建得了俺们的本地nuget服务器了,如果已经于vs中布局好了本土nuget路径,那么我们就是得采用了。

 

 

上述主要是针对dll发布暨援的军事管制介绍了自自以品种中举行的特级实践,后面会专门写一首文章介绍如何搭建Jinkens并使Jinkens完成自动化构建与安排之(也可以举行自动化测试)。

以上要是本着dll发布和援的管理介绍了自身自身以档次遭到开的超级实践,后面会专门写一首文章介绍如何搭建Jinkens并以Jinkens完成自动化构建与配置之(也堪开自动化测试)。