[英]How can I hide dependent Nuget packages?
我有一個這樣的類庫項目文件:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0-windows</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="InformationLog" Version="2.1.1" />
</ItemGroup>
</Project>
我的類庫有各種公共類型,例如PublicClass1
。 Nuget 包InformationLog
有一個名為Log
的公共類型。 我的類庫需要在內部使用Log
才能工作,但我不想讓我的類庫的用戶看到這種類型。 我希望人們可以訪問PublicClass1
但不能訪問Log
或InformationLog
中的任何其他類型或命名空間。
我可以將InformationLog
保留為依賴項,強制引用我的類庫的項目也使用InformationLog
nuget 包,我只是不希望該 Nuget 包中的類型可見。
理想情況下,我希望我的項目文件中有一些 XML 來解決這個問題。 像這樣的東西:
<PackageReference Include="InformationLog" Version="1.9.0" Access="Private"/>
有沒有辦法做這樣的事情?
您可以使用PrivateAssets="compile"
。
<PackageReference Include="InformationLog" Version="1.9.0" PrivateAssets="compile"/>
NuGet 關於資產選擇的文檔有更多詳細信息。
您可以看到 Roslyn 和其他人也利用了這一點: https ://github.com/dotnet/roslyn-sdk/blob/1df5d394195ffcf6aab5b824ae420197ed1f0acc/src/Microsoft.CodeAnalysis.Testing/Microsoft.CodeAnalysis.Analyzer.Testing/Microsoft .CodeAnalysis.Analyzer.Testing.csproj#L58-L62
通過不將runtime
資產設為私有,這意味着運行時資產將傳遞流動,並且依賴項將被復制到應用程序的bin/
文件夾中,並避免在程序集調用依賴項上的 API 時出現 FileNotFound 異常。 但是由於compile
資源對您的項目是私有的,因此它們不會傳遞,因此包使用者將無法直接調用包依賴項的 API,除非他們自己將 PackageReference 添加到同一個包,使其成為直接參考,而不是傳遞包。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.