Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 4.0 在csproj文件中,哪一种方法是正确的装配参考方法?_C# 4.0_Csproj - Fatal编程技术网

C# 4.0 在csproj文件中,哪一种方法是正确的装配参考方法?

C# 4.0 在csproj文件中,哪一种方法是正确的装配参考方法?,c#-4.0,csproj,C# 4.0,Csproj,在我的MSI安装程序中,我正在按语法更新程序集和项目引用相对路径。我的应用程序文件夹中的所有引用程序集 我尝试实现相对路径和绝对路径。两者都很好 相对路径 <Reference Include="log4net"> <HintPath>..\..\..\..\log4net.dll</HintPath> </Reference> ..\..\..\..\log4net.dll 绝对路径 <Reference Inclu

在我的MSI安装程序中,我正在按语法更新程序集和项目引用相对路径。我的应用程序文件夹中的所有引用程序集

我尝试实现相对路径和绝对路径。两者都很好

相对路径

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

..\..\..\..\log4net.dll
绝对路径

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

C:\Program files\Myapplication\log4net.dll
当我从引用程序集路径或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>
C:\ProgramFiles(x86)\Reference程序集
假的
C:\Program Files(x86)\Reference Assembly\Microsoft\WindowsPowerShell\v1.0\System.Management.Automation.dll

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

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

在某些情况下,如果您在
.csproj
文件中使用相对路径或绝对路径,则实际上是很重要的:

  • 当您计划移动
    .csproj
    文件时。引用的程序集是否也会移动,然后选择相对路径,否则选择绝对路径
  • 如果文件夹结构中存在极端嵌套,则相对路径可能超过260个字符的路径名限制。这是因为完整路径是通过简单地连接项目目录路径和相对路径(包括所有
    。\
    )在内部构建的。连接的路径可能会超过上面提到的路径名限制中的字符,而绝对路径则不会

Visual Studio似乎接受了一个环境变量,因此如果需要绝对路径,可以说
$(ProgramFiles)\Myapplication\log4net.dll
。优点是,如果文件夹名称是本地化的(在非英语版本的Windows中),或者确实包含
(x86)
后缀,则它仍然可以工作。但是,我不知道VisualStudio以外的其他工具是否可以在提示路径中使用环境变量。