VSS是一种非常有用的项目文件管理工具,百度百科的解释是:VSS 的全称为 Visual Source Safe 。作为 Microsoft Visual Studio 的一名成员,它主要任务就是负责项目文件的管理,几乎可以适用任何软件项目。管理软件开发中各个不同版本的源代码和文档,占用空间小并且方便各个版本代码和文档的获取,对开发小组中对源代码的访问进行有效的协调。但是在最近公司选择将TFS作为源代码管理工具,从而进行敏捷开发,所以我就将新的解决方案添加到TFS中,但是总是提示找不到\NBYZGA_Client_20150610\CustomControlLibrary\bin目录,然后就开始查找这个目录,然后查找整个解决方案,最终找不到任何相关的有用信息,那么TFS是从哪里查找到这些信息的呢,后来一个同事告诉我,用记事本打开sln文件,然后找到相关的内容,然后再将其删除掉就可以了,我照做了一下,果然找到了相关的信息:

Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "_Files", "_Files", "{58BF0E02-2D9B-4F2E-BD97-F747ECD5BCFB}"
  ProjectSection(SolutionItems) = preProject
  ..\NBYZGA\20151102\NBYZGA_Client_20150610\CustomControlLibrary\bin\Debug\CustomControlLibrary.dll =   ..\NBYZGA\20151102\NBYZGA_Client_20150610\CustomControlLibrary\bin\Debug\CustomControlLibrary.dll
  _Files\DateTimePickerControl.dll = _Files\DateTimePickerControl.dll
  _Files\Eas.dll = _Files\Eas.dll
  _Files\EAS.MicroKernel.dll = _Files\EAS.MicroKernel.dll
  _Files\System.Linq.Expressions.dll = _Files\System.Linq.Expressions.dll
  _Files\System.ObjectModel.dll = _Files\System.ObjectModel.dll
  _Files\System.Runtime.dll = _Files\System.Runtime.dll
  _Files\System.Windows.Interactivity.dll = _Files\System.Windows.Interactivity.dll
EndProjectSection

原来当你打开一个解决方案的时候,你所引用的DLL都是程序中通过这些信息来查找的,特别是将一个解决方案添加到TFS的源代码管理器中的时候,首先是从这个路径来查找相关的引用文件的,所以一旦我们将解决方案中相关的文件夹删除掉的话,那么程序就找不到相关的DLL文件。

我们接着来看看sln文件用记事本打开以后有哪些重点的东西:

  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ChartTest", "Tests\TestApps\ChartTest\ChartTest.csproj", "{173A15C2-D332-4FC2-87FD-0A9E58A431CB}"
  EndProject
  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Message", "Modules\Message\Message.csproj", "{2AF19951-02F8-4C05-9E7E-918029BC3B64}"
  EndProject
  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "X.Effects", "Public\X.Effects\X.Effects.csproj", "{2D0CD90B-9B16-4B76-A58D-C794A96108B0}"
  EndProject
  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tasks", "Modules\Tasks\Tasks.csproj", "{113ED2E9-E680-4BAE-A123-1E5F7530C78A}"
  EndProject
  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinForm", "Tests\WinForm\WinForm.csproj", "{23AE97CA-2DB9-4942-ADAA-DA6EE0A1F539}"
  EndProject
  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "X.Service.DataExchange.Winform", "Services\X.Service.DataExchange.Winform\X.Service.DataExchange.Winform.csproj",   "  {C5ABB2FF-0E5E-4459-96A7-326E1ADDB8B4}"
  EndProject
  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Users", "Modules\Users\Users.csproj", "{87F03A58-EB7F-4A86-A27E-7C1C0EA1F189}"
  EndProject
  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DefaultUserRegister", "Modules\DefaultUserRegister\DefaultUserRegister.csproj", "{3B2F034A-310C-4ABD-A96D-4043EC43A948}"
  EndProject
  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Plans", "Modules\Plans\Plans.csproj", "{F5A2C942-0EE9-42AD-A251-32D015C18078}"
  EndProject
  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GQYPGIS", "Apps\GQYPGIS\GQYPGIS\GQYPGIS.csproj", "{D98B2A92-8785-4A8F-B5C3-236A41AB4AC3}"
  EndProject
  Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Server", "Server", "{2873314B-0ABA-4E52-9F3B-95D3AEC76D59}"
  EndProject
  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServerShell", "Server\ServerShell\ServerShell.csproj", "{FB521BA7-E11A-4782-ACCA-CC5E93716B85}"
  EndProject
  Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DLPVideoApp", "Apps\DLPVideoApp\DLPVideoApp.csproj", "{C6B8B748-21DC-4DEF-9C1A-25BF0C7DBC0C}"
  EndProject

然后对照代码我们会发现,代码中的每一个类库以及相关的文件夹以及其中添加的DLL文件都有唯一的映射,Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ServerShell", "Server\ServerShell\ServerShell.csproj", "{FB521BA7-E11A-4782-ACCA-CC5E93716B85}"这一句表示 ServerShell这个名称的类库对应"Server\ServerShell\ServerShell.csproj"路径下的这个项目,而且每一个项目对应一个唯一的GUID,这样我们就能通过打开sln文件然后打开所有的解决方案下面的类库以及其他的文件。

还是回到上面的代码,为什么程序提示找不到CustomControlLibrary.dll 这个DLL,因为我们将其他类库生成的这个dll直接放到了bin\Debug这个目录下,然后直接引用这个目录下的DLL,这样在我们每次保存解决方案的时候,相关的DLL信息就被保存到了sln文件中,从而便于下次进行查找,这样做在平时是没有什么问题的,因为所有引用的DLL都会默认复制到输出目录,但是这种做法在将解决方案添加到VSS或者TFS中就会出问题,因为这些源代码管理器是不会讲bin及其子目录添加到源代码管理器中的,所以别人在获取这些源代码的时候也是无法获取bin目录的,所以当别人打开解决方案时就会找不到当前引用的DLL,所以在写代码时一定要养成很好的习惯,在解决方案下建一个专门存放引用DLL的文件夹,然后从这个位置去引用,这是一个非常重要的习惯。

另外在我们的代码中我们经常会编译成不同的版本,有时一不小心就会删掉重要的文件,所以这些小习惯非常重要,希望能够引起所有人的重视。

无法将从VSS中的解决方案添加到TFS的源代码管理器中的更多相关文章

  1. TFS 中如何将项目加入已有的源代码管理器中?

    Visual Studio 的某解决方案已经加入 Team Foundation Server,现在再将已经存在的项目加入到解决方案中,可是签入时,并没有把新加入的项目签入,怎么办呢? 在团队资源管理 ...

  2. 如何在URL筛选管理器中过滤不需要的URL

    互联网可以说是一把名副其实的双刃剑.一方面其可以提高工作效率.给企业提供充分的资源;另一方面如果管理不严,也会带来很多的隐患.如员工在上班时间玩游戏.炒股等等.为此现在很多企业希望对员工的网络行为进行 ...

  3. 通过srvctl add命令添加database信息到srvctl管理器-转

    这是我在实际中遇到的一个问题,rac+dg架构将备库切为主库,srvctl管理器中没有database信息. 对于dbca创建的数据库,srvctl中包含了数据库和实例的信息.但是对于备份恢复的RAC ...

  4. 解决方案看起来是受源代码管理,但无法找到它的绑定信息。保存解决方案的源代码管理设置的MSSCCPRJ.SCC文件或其他项可能己被删除。

    Visual Studio 2015 + SVN 开发环境,今天打开项目,就报了下面这个错误,先前是好好的! 解决方案看起来是受源代码管理,但无法找到它的绑定信息.保存解决方案的源代码管理设置的MSS ...

  5. 通过srvctl add命令添加database信息到srvctl管理器

    ================================================通过srvctl add命令添加database信息到srvctl管理器================ ...

  6. f2fs解析(八)node 管理器中的node_info

    free_info 功成身退,node_info顺利接班. // 这里还是蛮复杂的一件事,如果不搞清除的话,这个历史性的接班工作我们就接不上 上面说到 alloc_nid 和 alloc_nid_do ...

  7. f2fs解析(七)node管理器中的 free_nid 结构体

    除了node_info之外, node管理器中还有还有个重要的数据结构: struct free_nid { struct list_head list; /* for free node id li ...

  8. 元数据管理器中存在错误。 实例化来自文件“\\?\C:\Program Files\Microsoft SQL Server\MSAS11.MSSQLSERVER\OLAP\Data\Tfs_Analysis.0.db\vDimTestCaseOverlay.874.dim.xml”的元数据对象时出错。

    一.发现问题 启动SQLSERVER的数据分析服务失败 查看系统日志错误如下: 双击错误后显示详细错误: 元数据管理器中存在错误. 实例化来自文件“\\?\C:\Program Files\Micro ...

  9. Vusial Studio连接不到源代码管理器Vss

    我的VS突然链接不到我的源代码管理器了,重新注册一下就好了,regsvr32是注册命令,后面的填你自己的源代码路径 regsvr32 "E:\vss\ssscc.dll" regs ...

随机推荐

  1. 转://Linux下误删除/home目录的恢复方法

    一般情况下,我们在安装Oracle数据库的时候,都会创建一个Oracle用户,用该用户来安装和管理Oracle.Oracle用户的根目录就是/home/oracle. 通常安装Oracle数据库是按照 ...

  2. No.0

    算法类 1.快速排序算法 2.树的非递归后序排序算法 3.希尔排序 4.冒泡排序 5.链表和链表转向 6.其他   设计模式 1.单例模式 2.工厂模式 3.抽象工厂模式 4.面向对象设计,ooa,o ...

  3. Windows下,gVim编辑,Python2应用程序的乱码问题

    Windows,Python2环境下,当gVim配置了 set fileencoding=utf-8,则新建文件编码方式为utf-8. ○   如果代码不包含中文,或者仅包含中文注释,则utf-8编码 ...

  4. intoj

    192.168.0.6:1024 emm....我太健忘了...

  5. redis学习(三)——List数据类型

    一.概述      在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素.在插入时,如果该键并不存在,R ...

  6. Vue-发布订阅机制(bus)实现非父子组件的传值

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. 二十四、小程序中改变checkbox和radio的样式

    来源:https://blog.csdn.net/qq_39364032/article/details/79742415 在微信小程序里面,有时候为了配合整个项目的风格,checkbox和radio ...

  8. H5 CSS的格式

    02-CSS的格式 标签名称{ 属性名称: 属性对应的值; ... } 2.注意点: 1.style标签必须写在head标签的开始标签和结束标签之间(也就是必须和title标签是兄弟关系) 2.sty ...

  9. HDU - 1255 扫描线+离散化进阶

    这道题最开始我以为和HDU - 1542 那道题一样,只需要把cover次数改成2次即可,但是后面仔细一想,我们需要求的是覆盖次数大于等于2次的,这样的话,我们需要维护两个长度,HDU-1542 由于 ...

  10. DWZ富客户端框架(jQuery RIA framework)

    该OA项目前端采用的是DWZ框架来进行实现的. 本来想写点总结的,但发现真没啥好写的.中文的文档,到时候用到直接看文档就好.