如何在多个开发人员的项目中处理文件系统引用?

时间:2014-04-26 17:46:19

标签: c# .net visual-studio

我们有一个项目,它引用了位于每台开发机器上不同目录中的库。每次使用新的开发机器时,我们都需要在多个项目中手动重新添加某些库,我们希望在问题变大之前解决这个问题。

目前,手动重新添加引用会导致每台开发机器将自己的HintPath添加到.csproj文件中,这会导致.csproj文件如下所示:

<Reference Include="Microsoft.CodeAnalysis.EditorFeatures.Text, Version=0.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\..\..\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\ml2dtxdz.42m\Microsoft.CodeAnalysis.EditorFeatures.Text.dll</HintPath>
  <Private>True</Private>
  <HintPath>..\..\..\..\..\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\tpvugvu1.kcm\Microsoft.CodeAnalysis.EditorFeatures.Text.dll</HintPath>
  <HintPath>..\..\..\..\..\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\wcunwe5f.4dt\Microsoft.CodeAnalysis.EditorFeatures.Text.dll</HintPath>
</Reference>

我们的想法是将这些库复制到相对于解决方案的目录中,以便.csproj简化为:

<Reference Include="Microsoft.CodeAnalysis.EditorFeatures.Text, Version=0.6.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\packages_extra\VisualStudio12.0\Microsoft.CodeAnalysis.CSharp.dll</HintPath>
  <Private>True</Private>
</Reference>

这将引用的库移动到我们的源代码控制,简化了.csproj文件,并消除了在每个新开发机器上重新添加引用的过程。到目前为止,这种方法效果很好。

我的问题:我们不应该这样做吗?有没有更好的方法来解决这个问题?

让我们假设所有开发人员都拥有相同的操作系统,相同版本的Visual Studio和相同的CPU架构。

此问题类似于未答复的Conflicts with multiple developers on one Visual Studio project with source control

我们还尝试在项目属性中设置每用户引用路径,但Visual Studio似乎从未接受过这些提示。

2 个答案:

答案 0 :(得分:3)

1)完全有效这样做。我已经在与解决方案相关的文件夹中处理了第三部件组件的多个项目。只要文件夹从源代码控制中被拉下来,每次它都应该处理。如果这超出了你的解决方案,别忘了让人们知道这一点,当他们做到这一点时,他们就会知道这个问题。所以他们不要错过它。

2)在更大的组织中具有更多临界质量的替代方案可能是使用您自己的Nuget服务器,例如ProGet。

答案 1 :(得分:2)

对我来说,将所有需要的引用上传到CVS并配置项目以引用它们的方法总是很有效。

多亏了这一点,整个解决方案就可以在初始结账后立即编译。这大大减少了新开发人员或新机器的设置时间。此外,管理这些引用很容易 - 如果您的提交需要某个组件的新版本,那么此提交也将代表它自己。更新后,对于在系统其他部分工作的其他开发人员,此更改将是透明的。

在大型项目中,最大限度地减少基础设施问题可以节省大量时间。