Visual studio 为什么Visual Studio在编辑项目时从AssemblyReference RelativePath中删除驱动器号?

Visual studio 为什么Visual Studio在编辑项目时从AssemblyReference RelativePath中删除驱动器号?,visual-studio,reference,vcproj,Visual Studio,Reference,Vcproj,使用VisualStudio,我们总是加载并构建对单元(R:)的引用。问题是,当有人编辑任何项目属性时,驱动器号将从程序集路径中删除,然后生成计算机无法生成应用程序 项目文件在创建时如下所示: <References> <AssemblyReference RelativePath="R:\ClientContext.dll" AssemblyName="ClientContext, Version=8.3.0.0, PublicKeyToken=255

使用VisualStudio,我们总是加载并构建对单元(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,不确定这是否也发生在其他格式中


提前感谢各位朋友。

此页可能会让您了解一些情况,特别重要的是有关“RelativePath”设置的注释:“Relative Path-显示从项目目录到引用程序集的相对路径。”


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

此页面可能会为您提供一些见解,特别重要的是有关“RelativePath”设置的注释:“relative Path-显示从项目目录到引用程序集的相对路径。”


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

IDE非常喜欢相对路径,因为绝对路径非常脆弱。当R:drive映射不正确时,构建也将中断。但它是固定的:项目+属性、公共属性、框架和引用。将R:\路径添加到“附加参考搜索路径”列表中。

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

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

编辑

正如汉斯指出的,这个问题是关于C++的,它不支持项目文件中HutPATH的概念。如果C#、VB.Net或F#用户无意中发现这个问题,请留下

解决此问题的一种方法是在参考上使用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>

R:\ClientContext.dll

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

编辑

正如汉斯指出的,这个问题是关于C++的,它不支持项目文件中HutPATH的概念。如果C#、VB.Net或F#用户无意中发现这个问题,请留下

解决此问题的一种方法是在参考上使用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>

R:\ClientContext.dll


是的,我也考虑了RelativePath名称,并搜索了类似AbsolutePath的内容,但该属性不存在:\Yes,我也考虑了RelativePath的名称,并搜索了类似AbsolutePath的内容,但该属性不存在:\当然,发布工程部门会根据需要将R:\映射。所有公司都使用R:\drive来部署编译结果和符号,因此每个人都可以轻松地修改和测试已安装的应用程序。我真正需要的是能够在项目中设置绝对路径。这才是你真正需要的。你试过了吗?嗯,我还以为是Visual Studio设置的,我的错。我会试试这个和HintPath,看看有什么效果更好。感谢您,Project+属性编辑项目属性:)VS settings位于Tools+选项下。奇妙的是,设置被设置为R:\但即使这样,如果我从MSBuild抱怨找不到引用的相对路径中删除R:\?当然,发布工程部门负责根据需要映射R:\。所有公司都使用R:\drive来部署编译结果和符号,因此每个人都可以轻松地修改和测试已安装的应用程序。我真正需要的是能够在项目中设置绝对路径。这才是你真正需要的。你试过了吗?嗯,我还以为是Visual Studio设置的,我的错。我会试试这个和HintPath,看看有什么效果更好。感谢您,Project+属性编辑项目属性:)VS settings位于Tools+选项下。奇妙的是,设置被设置为R:\但即使这样,如果我从MSBuild抱怨找不到引用的相对路径中删除R:\?提示路径上的调用很好,我知道有一个这样的设置,但今天早上我记不起来了。据我在网上看到的信息,提示路径应该是R:\ClientContext.dll。我说的对吗?这是一个VC项目,它对HintPath一无所知。项目无法加载。@Hans,错过了VC项目部分。提示路径调用得很好,我知道有一个这样的设置,但今天早上记不起来了。据我在网上看到的信息,提示路径应该是R:\ClientContext.dll。我说的对吗?这是一个VC项目,它对HintPath一无所知。项目无法加载。@Hans,错过了VC项目部分。