在Visual Studio中添加参考的HintPath
我知道我可以将HintPath添加到外部DLL,以帮助Visual Studio/TFS在构建时找到dll。在Visual Studio中添加参考的HintPath
我在想什么是...是否可以添加多个HintPath?
例如...开发人员有一个地方的DLL,我们在服务器上的不同位置执行GetLatest这些DLL,因此需要多个HintPath。
你认为世界是什么?
此答案不再有效。正如Sardaukar's comment所说,Visual Studio总是盲目地使用最后的HintPath。 Alex's answer支持这一点。
好的。这次我比*快。我试图添加它,它似乎工作正常。
所以多个HintPath是可能的。
当你有这样的:
<Reference Include="System.ComponentModel.Composition.Codeplex">
<HintPath>..\..\..\MEF2_Preview2\bin\System.ComponentModel.Composition.Codeplex.dll</HintPath>
</Reference>
您可以简单地添加更多的提示路径那样:
<Reference Include="System.ComponentModel.Composition.Codeplex">
<HintPath>..\..\..\MEF2_Preview2\bin\System.ComponentModel.Composition.Codeplex.dll</HintPath>
<HintPath>D:\MEF\System.ComponentModel.Composition.Codeplex.dll</HintPath>
</Reference>
您可以使用该环境变量。例如。
<Reference Include="System.ComponentModel.Composition.Codeplex">
<HintPath>$(PathToDLLs)\MEF2_Preview2\bin\System.ComponentModel.Composition.Codeplex.dll</HintPath>
</Reference>
对不起,您不能使用多个HintPath的。 Visual Studio/MSBuild仅使用最后的<HintPath>
定义,并将忽略任何以前的。在VS2010和VS2012中确认。
以下内容添加到您的项目文件的底部只是注释掉目标部分之后:
<Target Name="BeforeResolveReferences">
<CreateProperty Value="YOUR_FIRST_PATH;YOUR_SECOND_PATH;$(AssemblySearchPaths)">
<Output TaskParameter="Value" PropertyName="AssemblySearchPaths" />
</CreateProperty>
</Target>
更换YOUR_FIRST_PATH
和YOUR_SECOND_PATH
与你的路。
这一点很重要这正好以下行之后,或者您的设置将被覆盖:
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
用在你的路径字符串的DLL结束时$(AssemblySearchPaths)
条目将覆盖正常的分辨率。如果将它移动到开头,则首先尝试正常分辨率,然后检查其他路径以查找未找到的任何路径。正常分辨率包括<HintPath>
部分,因此如果您的路径优先,则无需将其删除。
使用条件,您可以:
<Reference Include="TheAssembly">
<HintPath Condition="Exists('..\My\Assembly\Path')">..\My\Assembly\Path\TheAssembly.dll</HintPath>
<HintPath Condition="Exists('..\..\My\Assembly\Path')">..\..\My\Assembly\Path\TheAssembly.dll</HintPath>
<HintPath Condition="Exists('..\..\..\My\Assembly\Path')">..\..\..\My\Assembly\Path\TheAssembly.dll</HintPath>
<HintPath Condition="Exists('..\..\..\..\My\Assembly\Path')">..\..\..\..\My\Assembly\Path\TheAssembly.dll</HintPath>
<HintPath Condition="Exists('..\..\..\..\..\My\Assembly\Path')">..\..\..\..\..\My\Assembly\Path\TheAssembly.dll</HintPath>
<HintPath Condition="Exists('..\..\..\..\..\..\My\Assembly\Path')">..\..\..\..\..\..\My\Assembly\Path\TheAssembly.dll</HintPath>
<HintPath Condition="Exists('..\..\..\..\..\..\..\My\Assembly\Path')">..\..\..\..\..\..\..\My\Assembly\Path\TheAssembly.dll</HintPath>
etc...
</Reference>
在条件计算为true的最后HintPath将被使用。
你刚刚添加了多个HintPath条目,还是在单个条目中有多个路径? – 2009-10-01 17:07:49
如果是单个条目,是逗号分隔还是分号? – Maslow 2010-06-11 13:14:10
您能告诉我们这有可能吗? – Nick 2010-07-16 16:23:17