【问题标题】:VS2010 project -- unresolved references (where HintPath property missing)VS2010 项目——未解析的引用(缺少 HintPath 属性)
【发布时间】:2026-01-14 13:45:01
【问题描述】:

我们正在将我们的构建计算机更改为新的,同时更改为 Visual Studio 2010。我们有大约 500 个不同的小组件,每个组件都有自己的 csproj 文件,所有其中有对“\Framework\bin\”目录中的程序集的引用。

在获得完整的源代码并开始编译我们的项目后,我们遇到了一个问题:许多引用无法解析,但不是全部,而且在不同的项目中并不总是相同的引用。问题似乎与 csproj 文件的 HintPath 属性有关。

具体来说,这是一个可以解析的参考示例:

<Reference Include="AIS.Common, Version=8.1.0.1, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\..\Framework\Bin\AIS.Common.dll</HintPath>
</Reference>

这是一个不能

<Reference Include="AIS.ControlLib, Version=9.1.0.1, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
</Reference>

奇怪的是,Visual Studio 中两个引用的属性完全相同(当然,除了它们的名称和身份)。所以看起来 HintPath 是自动生成的,但为什么只在某些引用上?

我们怀疑问题可能来自使用不同版本的 Visual Studio(在 500 多个项目中,一些在 VS2005 中,另一些在 VS2008 中,还有一些仍在 VS2010 中),但我们无法将行为缩小到合乎逻辑的范围。

有没有什么方法可以编译我们的项目而无需手动重新附加未解析的引用?

【问题讨论】:

    标签: visual-studio visual-studio-2010 reference csproj


    【解决方案1】:

    作为记录,在注册表中添加以下键后,VS可以解析我们的引用:

    关键:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\AssemblyFolders\ProjectName
    值:
    "D:\AIS\Projects\Framework\Bin"

    在注册表中玩很少感觉是正确的做法,但在我们的情况下,它解决了问题。不过,我仍然会接受一个能够阐明整个事情的答案。

    【讨论】:

      【解决方案2】:

      就我而言,问题是,我的项目指定的目标 .NET 框架版本低于,而不是引用的项目。

      【讨论】: