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

C# 如何在一个有多个开发人员的项目中处理文件系统内引用?,c#,.net,visual-studio,C#,.net,Visual Studio,我们有一个项目,它引用了位于每个开发机器上不同目录中的库。每次使用新的开发机器时,我们都需要在多个项目中手动重新添加某些库,我们希望在问题变得更大之前解决这个问题 目前,手动重新添加引用会导致每台开发机器将其自己的HintPath添加到.csproj文件中,从而导致.csproj文件如下所示: <Reference Include="Microsoft.CodeAnalysis.EditorFeatures.Text, Version=0.6.0.0, Culture=neutral, P

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

目前,手动重新添加引用会导致每台开发机器将其自己的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>

假的
..\..\..\..\..\..\..\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\ml2dtxdz.42m\Microsoft.CodeAnalysis.EditorFeatures.Text.dll
真的
..\..\..\..\..\..\..\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\tpvugvu1.kcm\Microsoft.CodeAnalysis.EditorFeatures.Text.dll
..\..\..\..\..\..\..\AppData\Local\Microsoft\VisualStudio\12.0\Extensions\WCUNW5F.4dt\Microsoft.CodeAnalysis.EditorFeatures.Text.dll
其思想是将这些库复制到相对于解决方案的目录中,以便.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>

假的
..\packages\u extra\VisualStudio12.0\Microsoft.CodeAnalysis.CSharp.dll
真的
这将引用库移动到我们的源代码管理中,简化了.csproj文件,并消除了在每个新开发机器上重新添加引用的过程。到目前为止,这种方法非常有效

我的问题:有什么理由我们不应该这样做吗?有没有更好的办法解决这个问题

让我们假设所有开发人员都有相同的操作系统、相同版本的VisualStudio和相同的CPU体系结构

这个问题类似于未回答的问题


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

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

由于这一点,整个解决方案在初始签出之后就可以编译了。这大大缩短了新开发人员或新机器的安装时间。此外,管理这些引用也很容易——如果您的提交需要某个组件的新版本,那么这个提交也将代表它自己。更新后,对于在系统其他部分工作的其他开发人员来说,更改是透明的


在大型项目中,尽量减少基础设施问题可以节省大量时间

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

由于这一点,整个解决方案在初始签出之后就可以编译了。这大大缩短了新开发人员或新机器的安装时间。此外,管理这些引用也很容易——如果您的提交需要某个组件的新版本,那么这个提交也将代表它自己。更新后,对于在系统其他部分工作的其他开发人员来说,更改是透明的

在大型项目中,尽量减少基础设施问题可以节省大量时间

1)完全可以这样做。我曾在多个项目中工作,其中第三部分部件位于与解决方案相关的文件夹中。只要文件夹每次都从源代码管理中拉下来,它就可以正常工作。如果这超出了你的解决方案,不要忘记让人们知道这一点,这样他们就不会错过它

2) 在更大的组织中,具有更大临界质量的另一种选择可能是使用您自己的Nuget服务器,如ProGet

1)完全可以这样做。我曾在多个项目中工作,其中第三部分部件位于与解决方案相关的文件夹中。只要文件夹每次都从源代码管理中拉下来,它就可以正常工作。如果这超出了你的解决方案,不要忘记让人们知道这一点,这样他们就不会错过它


2) 在更大的组织中,具有更大临界质量的另一种选择可能是使用您自己的Nuget服务器,如ProGet

您是否考虑过使用命令行mklink创建您在解决方案中引用的链接您可以创建一个批处理文件来创建相关链接,这些链接可以根据每个开发人员的环境进行定制。那是个好主意!如果当前的方法失败,我们将对此进行调查。但是,让每个开发人员创建自己的一组快捷方式并不是天衣无缝的。您是否考虑过使用命令行mklink来创建您在解决方案中引用的链接您可以创建一个批处理文件来创建相关链接,这些链接可以根据每个开发人员的环境进行定制。那是个好主意!如果当前的方法失败,我们将对此进行调查。不过,让每个开发人员创建自己的快捷方式并不是天衣无缝的。我喜欢你的第二点。所有开箱即用的参考资料都是NuGet处理的参考资料。我喜欢你的第二点。所有开箱即用的引用都是由NuGet处理的引用。在我目前正在处理的解决方案中,我创建了一个项目来保存外部DLL(依赖项),然后引用解决方案中项目中的那些DLL。我使用了一个项目,因为这意味着获取项目的最新信息从源代码管理获取所有文件,减少了向所有人发送文件并告诉他们是否有更新的需要。在我目前正在开发的解决方案中,我创建了一个项目来保存外部DLL(依赖项),然后引用解决方案中项目中的DLL。我使用了一个项目,因为这意味着获取项目的最新信息,从源代码管理获取所有文件,减少了向每个人发送文件并告诉他们是否有更新的需要。