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

时间:2009-07-31 04:54:44

标签: visual-studio-2008 reference relative-path

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

6 个答案:

答案 0 :(得分:115)

扩展Pavel Minaev的原始注释 - Visual Studio的GUI支持相对引用,假设您的.sln是相对引用的根。因此,如果您有解决方案C:\myProj\myProj.sln,则您在C:\myProj\子文件夹中添加的任何引用都会自动添加为相对引用。

要在单独的目录(例如C:/myReferences/myDLL.dll)中添加相对引用,请执行以下操作:

  1. 在解决方案资源管理器中右键单击项目并选择添加引用...
  2. ,在Visual Studio GUI中添加引用
  3. 找到存在此引用的* .csproj,并在文本编辑器中打开它
  4. 编辑< HintPath>等于

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

  5. 现在引用C:\myReferences\myDLL.dll

    希望这会有所帮助。

答案 1 :(得分:8)

是的,只需在您的解决方案中创建一个目录,如lib /,然后将您的dll添加到文件系统中的该目录,并将其添加到项目中(Add-&gt; Existing Item-&gt; etc)。然后根据您的项目添加引用。

我在svn和cvs下已经多次这样做了。

答案 2 :(得分:2)

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

我在VS 2005中已经做了很多次没有任何问题。

答案 3 :(得分:2)

在VS 2017中它是自动的。因此,通常只需Add Reference

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

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

答案 4 :(得分:0)

如前所述,您可以手动编辑项目的.csproj文件,以便手动应用。

我还注意到Visual Studio 2013尝试将相对路径应用于引用提示路径,这可能是因为尝试使项目文件更具可移植性。

答案 5 :(得分:0)

我可能不在这里,但是答案似乎非常明显:在项目属性中查看引用路径。 在我们的设置中,我将公共存储库文件夹添加到ref path GUI窗口中,就像这样

Reference Paths in VS20xx

这样,我可以将自己的dll(准备发布)复制到该文件夹​​中,每个开发人员现在每次从该文件夹进行构建时都会获取更新的DLL。

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