2017-01-26 15 views
4

Например, вот мой .csproj прямо сейчас:При создании библиотеки стандартных классов .NET в VS 2017 RC, как мне сохранить ссылки на пакеты в качестве частных деталей реализации?

<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 Console приложение получает ссылку на Dapper.

ответ

3

Попробуйте установить флаг PrivateAssets:

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

От docs (который мог бы использовать некоторые уточнения):

... они могут включать в себя любое из следующих значений:

  • Скомпилировать - это содержимое папки lib, доступное для компиляции с
  • выполнения - это содержимое папки выполнения распределенного
  • ContentFiles - это содержимое папки contentfiles используется
  • Build - делают реквизита/цели в папке сборки привыкают
  • Native - это содержимое из нативные активы, скопированные в папку вывода для среды выполнения
  • анализаторов - делают анализаторы привыкают

Или, вместо того, чтобы:

  • Нет - ничего из этого не используется
  • Все - все эти вещи получают .
+0

Это полезно, потому что это делает скрыть зависимость, но при выполнении 'MSBuild/т: пак' я не вижу Dapper сборки или что-нибудь еще о Dapper в .nupkg. Поиск PrivateAssets привел меня к [этой ссылке] (https://github.com/NuGet/Home/wiki/PackageReference-Specification), которая, похоже, может быть полезна. Это мой первый раз, когда я пытаюсь сделать пакет NuGet, так что, возможно, мне не хватает чего-то очевидного. – user1676558

+0

Я думаю, что тогда время выполнения может быть подходящим для вас. –