2010-03-29 71 views
3

我正在开发一个项目,似乎每次有人从源代码管理项目签出项目以在其本地框中构建项目时,他们都会遇到问题,因为参考不再解决。您是否遇到Visual Studio 2008和C#的参考问题?

我无法弄清楚它是一个配置问题还是Visual Studio 2008问题。有其他人有这个问题吗?如果是这样,有什么可以解决这个问题吗?

注意:它可能与正在引用的DLL的显式路径有关,或者它们如何被引用......我不太确定。

+1

这些是什么样的引用(GAC,Project,文件系统,COM)? – 2010-03-29 17:09:30

+0

不知道为什么这是一个社区维基准确... – 2010-03-29 17:13:38

+0

当我写这个问题时,SO声称它是主观的,它很可能被关闭,所以我把它变成了一个社区维基。此外,我不一定只是寻找我的问题的答案...我试图衡量其他人是否有这些问题,或者有我们正在做的事情,其他人不是。 – 2010-03-29 17:15:26

回答

2

通常我看到这对机器A三种情况之一

  1. 软件包计算机A上,而不是机器B
  2. 事在GAC(全局程序集缓存),而不是在计算机B
  3. 包不签入源代码控制

Visual Studio的通常处理的关系寻路很好,我已经没有它只是是一个路径ISS UE。

另外请确保您没有签入.SUO文件和.csproj.user。这些都会有时候会引用参考文献。

+1

+1。确保它不在GAC或原始开发人员PC上的注册表(添加引用对话框中的.NET选项卡)中。检查开发人员是否未引用bin路径或其他文件不再存在或未检入。 – TrueWill 2010-03-29 17:11:59

+0

没有将.SUO文件或.csproj.user文件签入源代码管理,这很好。我不确定它是否位于原始开发人员PC上的GAC或注册表中?有没有办法让我根据我检查的源代码控制来检查? – 2010-03-29 18:03:35

+0

@Brian - 如果您选择一个引用并检查属性,它应该会显示它从哪里加载。至于它是否是标准.NET安装的一部分......这有点难以确定。但是,在加载其他机器时,您应该会收到有关缺少的内容的警告。检查这些引用的属性。如果从项目树外部加载它们,则需要解决。 – 2010-03-30 13:32:27

1

开始寻找你的.csproj文件。几年前我们遇到过这个问题,但很快就知道这是比其他任何操作更容易出错的地方。要查找的具体项目有:<HintPath><ProjectReference>

1

是的,你的问题肯定是由你引用的DLL的路径引起的。查看项目的References文件夹中DLL的属性(右键单击Visual Studio解决方案中的参考项并选择Propertiers),查看用于该DLL的路径。为了解决这个问题,一个选择是确保每个人在其本地驱动器上具有相同的路径到所引用的DLL。您还可以使用项目属性上的“参考路径”页面向项目添加其他参考路径。

0

请检查是否有人不小心犯下/任何csproj.user文件检查他们的本地路径内<ReferencePath> under <propertygroup>

0

这听起来像被引用的DLL没有签入源代码控制 - 我把所有外部DLL中的一个lib项目根目录下的文件夹并引用它们。我从来没有用Visual Studio正确解析相对路径的问题。

0
  1. 在同一解决方案中对自己的代码的引用应该是“项目引用”。千万不要直接将这些作为引用添加到DLL中。对于您自己的/内部的代码,请尽可能多地添加解决方案。否则采取策略2C。
  2. 应该讨论对其他代码的引用,并为每种引用类型选择一种策略。你有几种选择:

a。直接添加DLL作为解决方案的一部分,可能在LIB目录中。检查它到源代码管理。每个团队成员都会有一致的体验。

b。对于第三方组件,每个人都应该使用一致的安装路径等来运行供应商安装包(许多第三方安装到GAC,因此它成为参考的一部分,否则它将是c:\ Program files \ etc等)

c。将DLL发布到共享目录,即网络共享。仅来自此路径的参考DLL。确保Copy-Local是真实的。

通过检查CSPROJ文件XML中的标签(如ProjectReference和HintPath)验证策略是否已遵循。

最后,每个团队成员应该知道这一点。如果有人做了一些不同的事情,那么每次新的“获得最新”时都会一次又一次地感受到痛苦。