Visual Studio 中的 HintPath 与 ReferencePath

HintPath vs ReferencePath in Visual Studio(Visual Studio 中的 HintPath 与 ReferencePath)
本文介绍了Visual Studio 中的 HintPath 与 ReferencePath的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

.csproj 文件中的 HintPath.csproj.user 文件中的 ReferencePath 到底有什么区别?我们正在尝试遵守一个约定,其中依赖 DLL 位于发布"svn repo 中,并且所有项目都指向特定版本.由于不同的开发者有不同的文件夹结构,相对引用不起作用,所以我们想出了一个方案,使用一个指向特定开发者的发布文件夹的环境变量来创建一个绝对引用.所以添加引用后,我们手动编辑工程文件,使用环境变量将引用改为绝对路径.

What exactly is the difference between the HintPath in a .csproj file and the ReferencePath in a .csproj.user file? We're trying to commit to a convention where dependency DLLs are in a "releases" svn repo and all projects point to a particular release. Since different developers have different folder structures, relative references won't work, so we came up with a scheme to use an environment variable pointing to the particular developer's releases folder to create an absolute reference. So after a reference is added, we manually edit the project file to change the reference to an absolute path using the environment variable.

我注意到这可以通过 HintPathReferencePath 来完成,但我发现它们之间的唯一区别是 HintPath 在构建时解析,ReferencePath 在项目加载到 IDE 时解析.我不太确定这样做的后果是什么.我注意到VS有时会重写.csproj.user,我必须重写ReferencePath,但我不确定是什么触发了.

I've noticed that this can be done with both the HintPath and the ReferencePath, but the only difference I could find between them is that HintPath is resolved at build-time and ReferencePath when the project is loaded into the IDE. I'm not really sure what the ramifications of that are though. I have noticed that VS sometimes rewrites the .csproj.user and I have to rewrite the ReferencePath, but I'm not sure what triggers that.

我听说最好不要签入 .csproj.user 文件,因为它是特定于用户的,所以我想以此为目标,但我也听说过如果相同的 DLL 例如位于项目的输出目录中.对此有什么想法吗?

I've heard that it's best not to check in the .csproj.user file since it's user-specific, so I'd like to aim for that, but I've also heard that the HintPath-specified DLL isn't "guaranteed" to be loaded if the same DLL is e.g. located in the project's output directory. Any thoughts on this?

推荐答案

根据这个 MSDN 博客:https://blogs.msdn.microsoft.com/manishagarwal/2005/09/28/resolving-file-references-in-team-build-part-2/

According to this MSDN blog: https://blogs.msdn.microsoft.com/manishagarwal/2005/09/28/resolving-file-references-in-team-build-part-2/

在构建时有一个程序集的搜索顺序.搜索顺序如下:

There is a search order for assemblies when building. The search order is as follows:

  • 来自当前项目的文件 - 由 ${CandidateAssemblyFiles} 表示.
  • 来自 .user/targets 文件的 $(ReferencePath) 属性.
  • %(HintPath) 元数据由参考项指示.
  • 目标框架目录.
  • 在注册表中找到使用 AssemblyFoldersEx 注册的目录.
  • 注册的程序集文件夹,由 ${AssemblyFolders} 表示.
  • $(OutputPath) 或 $(OutDir)
  • 广汽

因此,如果 HintPath 找到了所需的程序集,但可以使用 ReferencePath 找到替代程序集,则它将更喜欢 ReferencePath'd 组装到 HintPath'd 一个.

So, if the desired assembly is found by HintPath, but an alternate assembly can be found using ReferencePath, it will prefer the ReferencePath'd assembly to the HintPath'd one.

这篇关于Visual Studio 中的 HintPath 与 ReferencePath的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
quot;Overflowquot; compiler error with -9223372036854775808L(编译器错误-9223372036854775808L(Q;溢出Q))
Visual Studio 2010 ReportViewer Assembly References(Visual Studio 2010 ReportViewer程序集引用)
Weird behaviour when I open a reportviewer in WPF(在WPF中打开报表查看器时出现奇怪的行为)
how do i pass parameters to aspnet reportviewer(如何将参数传递给aspnet report查看器)