1

使用 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,不确定其他格式是否也会发生这种情况。

先谢谢各位小伙伴了。

4

3 回答 3

3

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

编辑

正如 Hans 指出的,这个问题是关于 C++ 的,它不支持项目文件中的 HintPath 概念。以防 C#、VB.Net 或 F# 用户偶然发现问题

解决此问题的一种方法是在 Reference 上使用 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>
于 2010-10-14T15:12:00.820 回答
1

这个页面可能会给你一些见解,特别重要的是关于“RelativePath”设置的注释:“Relative Path - 显示从项目目录到引用程序集的相对路径。” http://msdn.microsoft.com/en-us/library/47w1hdab.aspx

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

于 2010-10-14T13:39:20.657 回答
1

IDE非常喜欢相对路径,因为绝对路径非常脆弱。当 R: 驱动器未正确映射时,您的构建也会中断。但它是可修复的:Project + Properties、Common Properties、Framework 和 References。将 R:\ 路径添加到“其他参考搜索路径”列表中。

于 2010-10-14T14:16:31.420 回答