【问题标题】:How to not reference dependencies of Microsoft.NETCore.App for .NET Core console apps?如何不为 .NET Core 控制台应用程序引用 Microsoft.NETCore.App 的依赖项?
【发布时间】:2017-08-03 04:02:41
【问题描述】:

我有一个全新的 .NET Core 应用程序。默认情况下,.NET Core 应用引用Microsoft.NETCore.App NuGet 包;我想卸载它引用的某些包,即System.Collections.Immutable,这样我就不能从我的应用程序中使用它们中的类型。

当隐式包含 Microsoft.NETCore.App 引用时,我该怎么做?现在.csproj文件中甚至都没有提到默认安装的包,那么我应该如何删除它们呢?

以下是我的.csproj 文件的内容:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp1.1</TargetFramework>
  </PropertyGroup>

</Project>

【问题讨论】:

  • 也许有人会提出如何做到这一点,但我对此表示怀疑。所以最好描述一下你想要的结果,有人可能会以不同的方式帮助你到达那里。例如您是否只是希望限制其他开发人员使用该特定命名空间?
  • 在 2.0 中,Microsoft.NETCore.App 不会有任何依赖项,而是一堆 dll..
  • 没有理由这样做。如果您不想使用 .NET Core,只需针对 .NET Framework 而不是 .NET Core 或交叉编译到两者
  • 目标是排除程序集吗?或者只是为了强制没有代码使用它?最后一个对于 roslyn 分析器来说是一个很好的用例..
  • @MartinUllrich:我刚到这里试图排除程序集,这样我就可以发布带有错误修复的私人编译版本。

标签: c# .net asp.net-core nuget .net-core


【解决方案1】:

NuGet 支持 PackageReference 上的标志,可让您控制从依赖项安装哪些资产。您可以像这样排除 System.Collections.Immutable 的部分内容:

<ItemGroup>
  <PackageReference Include="System.Collections.Immutable" Version="1.3.0" ExcludeAssets="Compile" />
</ItemGroup>

更多详情请见https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#controlling-dependency-assets/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 2019-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多