假设有多个较旧的项目,每个项目都包含对给定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)失败吗?
答案 0 :(得分:1)
标题的简单答案-不。这是一个提示路径,VS会始终在多个位置搜索引用。但是,如果文件不存在,肯定会导致构建失败-例如,this question中回答(尽管条件不应该是不存在,而不是存在)。
这实际上是一个巨大的痛苦-作为Visual Studio扩展的开发人员,我发现围绕HintPath解析的行为导致我经常遇到问题。