代码之家  ›  专栏  ›  技术社区  ›  Ignacio Soler Garcia

为什么在编辑项目时,Visual Studio会从AssemblyReference相对路径中删除驱动器号?

  •  1
  • Ignacio Soler Garcia  · 技术社区  · 14 年前

    使用visual studio,我们总是加载并构建对单元(R:)的引用。问题是,当有人编辑任何项目属性时,驱动器号将从程序集路径中删除,然后生成计算机无法生成应用程序。

    项目文件在创建时如下所示:

    <References>
        <AssemblyReference
        RelativePath="R:\ClientContext.dll"
        AssemblyName="ClientContext, Version=8.3.0.0, PublicKeyToken=255e4d2a8e3ef422, processorArchitecture=MSIL"
        MinFrameworkVersion="131072"
        />
    

    <References>
        <AssemblyReference
        RelativePath="ClientContext.dll"
        AssemblyName="ClientContext, Version=8.3.0.0, PublicKeyToken=255e4d2a8e3ef422, processorArchitecture=MSIL"
        MinFrameworkVersion="131072"
        />
    

    项目文件是vcproj,不确定这是否也以其他格式发生。

    提前谢谢各位。

    3 回复  |  直到 14 年前
        1
  •  1
  •   pstrjds    14 年前

    此页可能会让您有所了解,特别重要的是有关“RelativePath”设置的注释:“Relative Path-显示从项目目录到引用程序集的相对路径。” http://msdn.microsoft.com/en-us/library/47w1hdab.aspx

    问题是,它总是将其重置为相对于项目。

        2
  •  3
  •   JaredPar    14 年前

    正如其他人所说,根本问题是IDE希望有相对的引用路径。这使得在具有非常不同的机器设置的多个开发人员之间共享项目/解决方案更加容易。

    编辑

    解决这个问题的一种方法是在引用时使用HintPath子节点。这给IDE提供了一个在解析相对路径时查看位置的提示。

    <References> 
        <AssemblyReference 
          RelativePath="ClientContext.dll" 
          AssemblyName="ClientContext, Version=8.3.0.0, PublicKeyToken=255e4d2a8e3ef422, processorArchitecture=MSIL" 
          MinFrameworkVersion="131072">
            <HintPath>R:\ClientContext.dll</HintPath>
        </AssemblyReference>
    
        3
  •  1
  •   Hans Passant    14 年前

    IDE 真正地 喜欢相对路径,因为绝对路径很脆弱。当R:drive映射不正确时,您的构建也将中断。但它是可修复的:项目+属性、公共属性、框架和引用。将R:\路径添加到“其他引用搜索路径”列表。