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


96

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


13
如果从UI上无法正常工作,请记住,您可以直接直接手工编辑.proj文件,并将路径更改为relative。一旦以任何一种方式更改了它,它都将保持原样。
帕维尔米纳夫

1
在Visual Studio 2010中,默认情况下,引用路径存储为相对路径,因此,如果发生这种情况,则可能有其他问题。以我为例,我会完全忽略版本控制中的dll,以便我可以编译解决方案,但我的同事却不能。
吉尔斯·罗伯茨

Answers:


124

扩展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

希望这可以帮助。


20
我知道这是有用且正确的,但是VS gui是否严重没有提供添加相对参考的方法?
kdbanman

4
在VS 2015中,我默认情况下具有此行为(相对路径)
Mugen 16'1

2
我坚信,这增加了一条绝对的道路,直到我出于好奇而跟随您的指示。VS在参考属性中显示了绝对路径,但<HintPath>显示为已相对。原来我缺少文件O_o lolimaderp!
donutguy640

@ donutguy640那也让我感到困惑。它们还应该在属性窗格上显示相对路径
Alexander Derck,

1
您不必直接编辑项目文件。在添加引用对话框中选择“浏览”,导航到包含项目文件的文件夹,然后将相对路径添加到DLL。尽管在属性窗口中显示了绝对路径,但相对路径已保存到项目文件中。VS确实应该显示路径,就像保存在项目文件中一样。
必要的东西,

9

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

我已经在svn和cvs下完成了几次。


5
您无需将dll添加到项目本身,只需添加对它的引用。最好的办法是将整个“ lib”目录添加到源代码管理中。请参见code.google.com/p/projectpilot/source/browse/#svn/trunk的示例
Igor Brejc,2009年

1
你是对的。我检查了一个旧项目,目录或dll都未添加到项目本身,仅添加到了存储库。然后参考是相对于项目的。对于那个很抱歉。
弗雷迪,2009年

3

在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中做了很多次而没有任何问题。


3
我认为没有必要手动修改项目文件。以我的经验,Visual Studio始终使用相对路径。我唯一需要手动修改项目文件的时间是当我想要共享密钥文件(.snk)时。Visual Studio始终只是将密钥文件复制到项目目录中,这会导致密钥文件的多个副本。
Stefan Egli

1

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

VS20xx中的参考路径

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

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


不幸的是,这保存在csproj.user文件中,并且不是相对的。
Jamie Kitson

0

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.