是否可以使Visual Studio *仅*使用给定参考的HintPath

时间:2018-06-21 10:23:09

标签: c# visual-studio

假设有多个较旧的项目,每个项目都包含对给定dll的引用,例如:

<Reference Include="nunit.framework">
  <HintPath>..\lib\nunit.framework.dll</HintPath>
</Reference>

现在,我已更新为使用nuget,并且一些项目使用了新的防御系统,如下所示:

<Reference Include="nunit.framework">
  <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
</Reference>

..\lib\中较旧的dll被删除,并且我预期 Visual Studio无法为所有我忘记更新的项目构建。遗憾的是VS并没有...相反,它是基于在我的机器上某处上找到的一些晦涩的dll版本构建的。.

如果Reference上不存在给定的HintPath,我可以使VS(或与此相关的msbuild)失败吗?

1 个答案:

答案 0 :(得分:1)

标题的简单答案-不。这是一个提示路径,VS会始终在多个位置搜索引用。但是,如果文件不存在,肯定会导致构建失败-例如,this question中回答(尽管条件不应该是不存在,而不是存在)。

这实际上是一个巨大的痛苦-作为Visual Studio扩展的开发人员,我发现围绕HintPath解析的行为导致我经常遇到问题。