【问题标题】:Referencing assemblies under dotnet installation directory引用 dotnet 安装目录下的程序集
【发布时间】:2020-01-23 23:34:49
【问题描述】:

想知道 .csproj 是否有任何合法理由在dotnet 安装目录下包含对带有提示路径的程序集的程序集引用(默认:Windows 上的c:\Program Files\dotnet) .

特别是目录

  • sdk
  • 共享

此类引用的示例:

  <ItemGroup>
    <Reference Include="Microsoft.Extensions.Configuration.Abstractions">
      <HintPath>..\..\..\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\3.1.0\ref\netcoreapp3.1\Microsoft.Extensions.Configuration.Abstractions.dll</HintPath>
    </Reference>
  </ItemGroup>

【问题讨论】:

  • 没有。 .NET Core SDK 使用它来定位框架程序集,因此不希望被传统项目文件使用。
  • 如果您的目标是使用库中的 ASP.NET Core 类型,请查看 stackoverflow.com/questions/57760356/…。不过,您也可以将 NuGet 包用于 Microsoft.Extensions 内容。

标签: .net-core .net-assembly csproj


【解决方案1】:

当然不是。此应用程序无法在其他机器上运行。

看起来有人插入了使用未引用的 Microsoft.Extensions.Configuration.Abstractions 包的代码,然后可能应用了 Resharper/Rider 的“快速修复”操作。有时会导致不引用 Nuget 包

<ItemGroup>
      <PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="3.1.1" />
</ItemGroup>

但要引用本地放置的程序集。

【讨论】:

  • “此应用程序无法在其他机器上运行” - 程序集是否仍不会被复制到构建输出目录?我并不是说它是好的/正确的,我只是说应用程序可能在构建后仍然可以工作。
  • 程序集肯定会被复制到输出目录。我说的是当开发人员尝试从另一台机器上的源代码构建应用程序时的场景。
猜你喜欢
  • 2022-01-03
  • 2018-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
相关资源
最近更新 更多