【问题标题】:Visual Studio: Relative Assembly References PathsVisual Studio:相对程序集引用路径
【发布时间】:2010-11-15 16:40:53
【问题描述】:

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

【问题讨论】:

  • 如果在 UI 中不能正常工作,请记住您可以直接手动编辑 .proj 文件并将路径更改为相对路径。一旦你改变了它,它就会保持你原来的样子。
  • 在 Visual Studio 2010 中,引用路径默认存储为相对路径,因此如果您遇到这种情况,则可能出现其他问题。在我的情况下,我会从版本控制中完全忽略 dll,这样我就可以编译解决方案,但我的同事却不能。

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


【解决方案1】:

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

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

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

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

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

希望这会有所帮助。

【讨论】:

  • 我知道这是有用且正确的,但是 VS gui seriously 没有提供添加相对引用的方法吗?
  • 在 VS 2015 中我默认得到了这种行为(相对路径)
  • 我确信它添加了一条绝对路径,直到我出于好奇而按照您的指示进行操作。 VS 在参考属性中显示了绝对路径,但 显示为已经相对。原来我丢失了文件 O_o lolimaderp!
  • @donutguy640 这也让我感到困惑。它们还应该在属性窗格上显示相对路径
  • 您不必直接编辑项目文件。在添加引用对话框中选择“浏览”,导航到包含项目文件的文件夹,然后将相对路径添加到 DLL。尽管属性窗口中显示了绝对路径,但相对路径会保存到项目文件中。 VS 确实应该像保存在项目文件中一样显示路径。
【解决方案2】:

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

我在svn和cvs下都做过好几次了。

【讨论】:

  • 您不需要将dll添加到项目本身,只需添加对它的引用即可。最好的办法是将整个“lib”目录添加到源代码管理中。以code.google.com/p/projectpilot/source/browse/#svn/trunk为例
  • 你是对的。我检查了一个旧项目,并且没有将目录或 dll 添加到项目本身,只是添加到存储库中。然后参考相对于项目。对此感到抱歉。
【解决方案3】:

在 VS 2017 中它是自动的。所以像往常一样只是Add Reference。

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

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

【讨论】:

    【解决方案4】:

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

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

    【讨论】:

    • 我认为不需要手动修改项目文件。根据我的经验,Visual Studio 总是使用相对路径。唯一一次我必须手动修改项目文件是当我想共享一个密钥文件 (.snk) 时。 Visual Studio 总是只将密钥文件复制到项目目录中,这会导致密钥文件的多个副本。
    【解决方案5】:

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

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

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

    【讨论】:

    • 不幸的是,这保存在 csproj.user 文件中并且不是相对的。
    【解决方案6】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-14
      • 2013-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多