.csproj文件中的HintPath
和ReferencePath
文件中的.csproj.user
之间到底有什么区别?我们正在尝试遵循一个约定,在该约定中,依赖项DLL位于“发布” svn存储库中,并且所有项目都指向特定的发布。由于不同的开发人员具有不同的文件夹结构,因此相对引用将不起作用,因此我们提出了一种方案,该方案使用指向特定开发人员的releases文件夹的环境变量来创建绝对引用。因此,在添加引用后,我们手动编辑项目文件以使用环境变量将引用更改为绝对路径。
我注意到,这可以同时使用HintPath
和ReferencePath
来完成,但是我可以发现的唯一区别是,在将项目加载到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/
生成时有一个针对装配体的搜索顺序。搜索顺序如下:
因此,如果HintPath找到了所需的程序集,但是可以使用ReferencePath找到一个备用程序集,则它将比HintPath的程序更喜欢使用ReferencePath的程序集。