创建Nuget程序包而不将该依赖项添加到当前项目中?

时间:2018-12-02 16:05:20

标签: .net-core nuget nuget-package dependency-management

我使用.NET Core尝试创建一个新的Nuget,而无需安装它自己的依赖项。 这是我的新NuGet软件包csproj:

 <Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup Label="Globals">
    <TargetFrameworks>net461</TargetFrameworks>
    <PackageId>MyFirstNuget</PackageId>
    <Version>1.0.1-prerelease</Version>
    <Authors></Authors>
    <Company></Company>
    <Description></Description>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <SccLocalPath>.</SccLocalPath>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="SomePackage" Version="7.12.4" />
  </ItemGroup>
</Project>

当我在项目上安装软件包时,它将安装软件包“ SomePackage” example

是否可以选择不安装所有依赖项?

2 个答案:

答案 0 :(得分:3)

使用PackageReference时,有一些方法可以控制依赖项资产。

here所述:

  

IncludeAssets:这些资产将被消耗

     

ExcludeAssets:这些资产不会被消耗

     

PrivateAssets:这些资产将被消耗,但不会流到父项目

在您的情况下,您需要使用如下的PrivateAssets:

 <ItemGroup>
    <PackageReference Include="SomePackage" Version="7.12.4">
       <PrivateAssets>all</PrivateAssets>
    </PackageReference>
  </ItemGroup>

由于您的项目使用SomePackage,但是您不希望在使用新的NuGet软件包时安装SomePackage。

答案 1 :(得分:1)

我认为PrivateAssets可以为您提供帮助。尝试将PackageReference更改为

<PackageReference Include="UmbracoCms" Version="7.12.4">
  <PrivateAssets>all</PrivateAssets>
</PackageReference>