4

在我的一个 MSI 安装程序中,我正在以编程方式更新程序集和项目参考相对路径。我的应用程序文件夹中的所有参考程序集。

我尝试实现路径相对路径和绝对路径。两者都工作正常。

相对路径

 <Reference Include="log4net">
      <HintPath>..\..\..\..\log4net.dll</HintPath>
 </Reference>

绝对路径

 <Reference Include="log4net">
          <HintPath>C:\Program files\Myapplication\log4net.dll</HintPath>
 </Reference>

当我从 Reference Assemblies Path 或 GAC 文件中获取程序集的引用时,我只看到了绝对路径引用。

C:\Program Files (x86)\Reference Assemblies

 <Reference Include="System.Management.Automation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>C:\Program Files (x86)\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0\System.Management.Automation.dll</HintPath>
    </Reference>

哪一种是将路径更新为.Csproj文件的正确方法?

4

1 回答 1

2

正如您所说:两者都可以正常工作。

在某些极端情况下,实际上在.csproj文件中使用相对路径还是绝对路径很重要:

  • 当您计划移动.csproj文件时。引用的程序集是否也会移动,然后使用相对路径,否则使用绝对路径。
  • 当您的文件夹结构中有极端嵌套时,相对路径可能会超过 260 个字符的路径名限制。这是因为完整路径是通过简单地连接项目目录路径和相对路径(包括所有..\. 然后,连接路径可能会超过上面提到的characters-in-path-name-limit,而绝对路径不会。
于 2012-07-10T17:38:33.790 回答