在VS 2017 RC中创建.NET标准类库时,如何将包引用保留为私有实现详细信息?

时间:2017-01-26 00:27:24

标签: .net nuget .net-core visual-studio-2017

例如,现在是我的.csproj:

<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
  <PropertyGroup>
    <TargetFrameworks>netstandard1.3;net451</TargetFrameworks>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="**\*.cs" />
    <EmbeddedResource Include="**\*.resx" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Dapper" Version="1.50.2" />
    <PackageReference Include="NETStandard.Library" Version="1.6.1" />
  </ItemGroup>
</Project>

Dapper的任何内容都不会在公共API中公开,因此我似乎应该将其作为私有实现细节。但是,在创建测试.nupkg并从.NET Framework控制台应用程序引用它时,该应用程序将获得对Dapper的引用。

1 个答案:

答案 0 :(得分:3)

尝试设置PrivateAssets标志:

<PackageReference Include="Dapper">
  <Version>1.50.2</Version>
  <PrivateAssets>Runtime</PrivateAssets>
</PackageReference>

来自docs(可能会使用一些澄清):

  

...这些可以包括以下任何值:

     
      
  • 编译 - 是可用于编译
  • 的lib文件夹的内容   
  • 运行时 - 是分发的运行时文件夹的内容
  •   
  • ContentFiles - 是使用的contentfiles文件夹的内容
  •   
  • 构建 - 使用构建文件夹中的props / targets
  •   
  • Native - 是复制到运行时输出文件夹的本机资产的内容
  •   
  • 分析仪 - 使用分析仪
  •   
     

或者,改为:

     
      
  • 无 - 这些都不会被使用
  •   
  • 全部 - 所有这些都得到了   使用。
  •