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. [matlab] 8.蚁群算法解决TSP问题

    城市坐标数据下载  密码:07d5 求遍历这52座城市后最后回到最初城市的最短距离 %% 第9章 蚁群算法及MATLAB实现——TSP问题 % 程序9-1 %% 数据准备 % 清空环境变量 clear ...

  2. (2)esp8266多国语言翻译系统

    http://bbs.mydigit.cn/simple/?t2649513.html 这个想法不错 原来只是想用esp8266搞一个百度的多国语言翻译系统出来的,只是为了尝试如何调用各种web ap ...

  3. Spring Security(十三):5.2 HttpSecurity

    Thus far our WebSecurityConfig only contains information about how to authenticate our users. How do ...

  4. 猜数字游戏,判断输入的数字与系统产生的数字是否一致(Math.random()与if嵌套循环)

    package com.summer.cn; import java.util.Scanner; public class Test041509 { /** * java 随机数 Math * Mat ...

  5. Java多线程(八)——join()

    一.join()介绍 join() 定义在Thread.java中.join() 的作用:让“主线程”等待“子线程”结束之后才能继续运行.这句话可能有点晦涩,我们还是通过例子去理解: // 主线程 p ...

  6. Jenkins集成openshift容器中进行代码扫描

    1.Dockerfile sonarDockerfile: (基础slave镜像参考上篇博文) FROM registry.it.com/openshift/jenkins-slave:latest ...

  7. Java 执行远程主机shell命令代码

    pom文件: <dependency> <groupId>org.jvnet.hudson</groupId> <artifactId>ganymed- ...

  8. Scala学习(九)---文件和正则表达式

    文件和正则表达式 摘要: 在本篇中,你将学习如何执行常用的文件处理任务,比如从文件中读取所有行或单词,或者读取包含数字的文件等.本篇的要点包括: 1. Source.fromFile(...).get ...

  9. WPF之TextBox和PasswordBox水印效果

    在博客园里看到了好多关于文本框和密码框水印效果的文章,今天有空也来实现一把,最终效果图如下: 文本框的话,稍微好一点直接可以绑定它的Text属性,因为他是个依赖属性,我用了二种方式来实现水印效果:触发 ...

  10. Linux下快速配置Java开发环境

    1.下载 jdk8官网下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html ...