.csproj文件中的HintPathReferencePath文件中的.csproj.user之间到底有什么区别?我们正在尝试遵循一个约定,在该约定中,依赖项DLL位于“发布” svn存储库中,并且所有项目都指向特定的发布。由于不同的开发人员具有不同的文件夹结构,因此相对引用将不起作用,因此我们提出了一种方案,该方案使用指向特定开发人员的releases文件夹的环境变量来创建绝对引用。因此,在添加引用后,我们手动编辑项目文件以使用环境变量将引用更改为绝对路径。

我注意到,这可以同时使用HintPathReferencePath来完成,但是我可以发现的唯一区别是,在将项目加载到IDE中时,HintPath在生成时已解析,ReferencePath已解决。我不太确定那是什么后果。我注意到VS有时会重写.csproj.user,而我不得不重写ReferencePath,但是我不确定是什么触发了它。

我听说最好不要检入.csproj.user文件,因为它是特定于用户的,因此我希望以此为目标,但我也听说HintPath指定的DLL不能“保证”被如果相同的DLL是例如加载位于项目的输出目录中。有什么想法吗?

最佳答案

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

生成时有一个针对装配体的搜索顺序。搜索顺序如下:

  • 当前项目中的文件-由$ {CandidateAssemblyFiles}表示。
  • 来自.user / targets文件的
  • $(ReferencePath)属性。
  • %(HintPath)元数据由引用项指示。
  • 目标框架目录。
  • 在使用AssemblyFoldersEx注册的注册表中找到
  • 目录。
  • 已注册的程序集文件夹,以$ {AssemblyFolders}表示。
  • $(输出路径)或$(OutDir)
  • GAC

  • 因此,如果HintPath找到了所需的程序集,但是可以使用ReferencePath找到一个备用程序集,则它将比HintPath的程序更喜欢使用ReferencePath的程序集。

    07-24 13:02