Visual Studio:相对程序集引用路径

问题描述 投票:0回答:7

添加对位于解决方案目录中的程序集的引用时,是否有任何方法可以相对地添加它,以便在签入和签出存储库时在项目中正确引用它?

visual-studio-2008 reference relative-path
7个回答
136
投票

扩展 Pavel Minaev 的原始评论 - Visual Studio 的 GUI 支持相对引用,假设您的 .sln 是相对引用的根。因此,如果您有解决方案

C:\myProj\myProj.sln
,您在
C:\myProj\
的子文件夹中添加的任何引用都会自动添加为相对引用。

要在单独的目录中添加相对引用,例如

C:/myReferences/myDLL.dll
,请执行以下操作:

  1. 在解决方案资源管理器中右键单击项目并选择添加引用...

    ,在 Visual Studio GUI 中添加引用
  2. 找到此引用所在的 *.csproj 并在文本编辑器中打开它

  3. 编辑 < HintPath > 使其等于

    <HintPath>..\..\myReferences\myDLL.dll</HintPath>

现在引用

C:\myReferences\myDLL.dll


9
投票

是的,只需在解决方案中创建一个目录(例如 lib/),然后将 dll 添加到文件系统中的该目录并将其添加到项目中(添加->现有项目->等)。 然后根据您的项目添加参考。

我已经在 svn 和 cvs 下这样做过好几次了。


7
投票

在 VS 2017 中它是自动的。所以就像平常一样

Add Reference

请注意,在

Reference Properties
中显示绝对路径,但在
.vbproj/.csproj
中使用相对路径。

<Reference Include="NETnetworkmanager">
      <HintPath>..\..\libs\NETnetworkmanager.dll</HintPath>
      <EmbedInteropTypes>True</EmbedInteropTypes>
</Reference>

2
投票

实现此目的的最简单方法可能是简单地将引用添加到程序集,然后(手动)修补相应 Visual Studio 项目文件(扩展名 .csproj)中引用的文本表示形式,使其成为相对的。

我已经在 VS 2005 中多次执行此操作,没有出现任何问题。


1
投票

我可能离开这里,但似乎答案非常明显:查看项目属性中的引用路径。 在我们的设置中,我将公共存储库文件夹添加到引用路径 GUI 窗口中,如下所示

Reference Paths in VS20xx

这样我就可以将我的 dll(准备发布)复制到此文件夹,现在每个开发人员每次从此文件夹构建时都会获得更新的 DLL。

如果在解决方案中找到该 dll,构建者应优先考虑本地版本而不是已发布的团队版本。


0
投票

如前所述,您可以手动编辑项目的

.csproj
文件以便手动应用它。

我还注意到 Visual Studio 2013 尝试将相对路径应用到参考提示路径,可能是因为试图使项目文件更加可移植。


0
投票

我知道这是一个老问题,但我在 VS2022 中遇到了这个问题,并找到了一个与上面提到的略有不同的解决方案。

您可以手动更新 csproj 文件以添加以下 ReferencePath:

<ReferencePath>$(SolutionDir)..\MyDllsSharedAcrossSolutions</ReferencePath>

所以我的 csproj 文件有这样的内容(因为我的相对路径在目录结构中位于较高位置)。

<Project ...>
  <PropertyGroup>
    <ReferencePath>$(SolutionDir)..\MyDllsSharedAcrossSolutions</ReferencePath>
  </PropertyGroup>
  ...
© www.soinside.com 2019 - 2024. All rights reserved.