VS2010项目 - 未解析的引用(缺少HintPath属性)

时间:2011-05-19 14:16:22

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

我们正在将构建计算机更改为新计算机,同时更改为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中两个引用的属性完全相同(当然,除了Name和Identities之外)。所以似乎 HintPath 是自动生成的,但为什么只在某些引用上?

我们怀疑使用不同版本的Visual Studio可能会出现问题(500多个项目中,有些在VS2005中,有些在VS2008中,其他在VS2010中),但我们无法将行为缩小到合乎逻辑的程度。

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

2 个答案:

答案 0 :(得分:1)

对于记录,在将以下密钥添加到注册表后,VS可以解析我们的引用:

<强>键:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft.NETFramework \ AssemblyFolders \项目名
<强>值:
“d:\ AIS \项目\框架\滨”

在注册表中玩很少感觉是正确的事情,但在我们的情况下,它解决了这个问题。尽管如此,我仍然会接受一个能够照亮整个事情的答案。

答案 1 :(得分:0)

在我的情况下,问题是,我的项目指定了较低目标.NET框架版本,而不是引用的项目。