维护subversion解决方案的参考

时间:2011-12-12 11:26:09

标签: .net visual-studio-2010 svn reference projects-and-solutions

我有一个解决方案,里面有三个项目。如果需要,这些项目都可以独立使用。为了清楚地说明,我的项目如下:

  • “常规”类库项目,包含许多基本抽象类,如“Person”和一些Helper类。

  • “EmployeeManagement”类库项目,其中包含Employee:Person,EmployeeAddressList以及与管理员工相关的其他类。

  • 一个Web应用程序项目,它引用上述两个项目作为表示层/ Web表单。即“editemployees.aspx.cs”,用于编辑现有员工信息等。


这一切都很好,但是当我进行大量更改然后将所有三个项目推送到他们各自的三个存储库时,我的同事将从三个存储库中提取所有更改,然后打开整体解决方案。一切都完好无损,但Web应用程序项目不再识别对General和EmployeeManagement的引用。它们列在References文件夹中,但代码本身不会编译,尖叫着各种带下划线的红色疯狂。简单的解决方案是将它们从References文件夹中删除,然后再次添加它们,就像魔术一样,一切都可以再次使用。

我的问题是:

  1. 为什么会这样?
  2. 我做错了什么? (也许我推送到存储库的顺序或他拉动的顺序是关闭的?)
  3. 我该怎么做才能防止这种情况发生?
  4. 谢谢:)

3 个答案:

答案 0 :(得分:2)

您的目录布局很可能与您的同事不同。

您的项目看起来很小,以证明分散在三个回购中。您最好专注于软件的体系结构,而不是过度设计项目基础设施使生活变得复杂。

顺便说一下。在svn中我们提交并更新: - )

答案 1 :(得分:1)

我不知道更多,我会查看你各自的.sln和.csproj或.vbproj文件,并确保每次提交更改时都不会覆盖包含项目的相对路径。

以下是解决方案/项目文件中包含的项目引用的示例:

的.sln

Project("{6f8415d8-82c0-4e47-8ddd-f3962bb3b518}") = "QuickJoe.Awesome", "QuickJoe.Awesome\QuickJoe.Awesome.csproj", "{e623a940-79ba-4762-af02-84993a2b37b7}"
EndProject
Project("{6f8415d8-82c0-4e47-8ddd-f3962bb3b518}") = "QuickJoe", "..\qjs\QuickJoe\QuickJoe.csproj", "{6754372e-b253-41be-9b83-23cf8bea786f}"
EndProject

的.csproj / .vbproj

<ItemGroup>
  <ProjectReference Include="..\..\qjs\QuickJoe\QuickJoe.csproj">
    <Project>{6754372e-b253-41be-9b83-23cf8bea786f}</Project>
    <Name>QuickJoe</Name>
  </ProjectReference>
</ItemGroup>

另一个好的提示(如果你还没有这样做)是专门排除.user和.suo文件。在某些情况下,当它们加载到不同的工作站上时,它们会非常有害。

答案 2 :(得分:0)

如果您使用的是Visual Studio,请考虑将解决方案放在文件夹树的顶部,以及下面的项目。然后,Visual Studio应通过其内部变量之一$(SolutionDir)引用项目。如果做不到这一点,请手动编辑解决方案并使文件夹/项目位置相对于$(SolutionDir),然后无论在何处检出,所有内容都应该是可移植的。