New meta package – package of all packages – Microsoft.AspNetCore.All
Microsoft.AspNetCore.All代表什么?首先让我们回顾一下 ASP.NET Core的第一个版本。微软随后宣布 一切都是(nuget)包。甚至MVC本身也是一个难题 包。如果你想要MVC,你可以通过nuget安装它。如果你想 启用CORS你可以通过nuget安装它。像Node.js那样的东西 与其npm包。一切都是模块化的和有点的。你到了 选择要安装的内容。即使它非常整洁它也有它 缺点。安装所有需要的软件包,更新可能很麻烦 他们,维护项目,删除未使用的等。对于新手来说 .NET或.NET Core可能非常令人厌恶。
如何在nuget中为自己的库创建元数据包(所有包的包),如Microsoft.AspNetCore.All?
答案 0 :(得分:7)
元包是一个引用其他NuGet包的NuGet包,通常不包含任何程序集。
如果您创建.nuspec文件,下面是Microsoft.AspNetCore.All NuGet包的.nuspec文件的一部分,然后定义您的依赖项,您可以调用nuget pack YourNuSpecFile.nuspec
来创建您的元包。
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>Microsoft.AspNetCore.All</id>
<version>2.0.0-preview2-final</version>
<authors>Microsoft</authors>
<owners>Microsoft</owners>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<licenseUrl>https://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm</licenseUrl>
<projectUrl>https://www.asp.net/</projectUrl>
<iconUrl>https://go.microsoft.com/fwlink/?LinkID=288859</iconUrl>
<description>Microsoft.AspNetCore.All</description>
<copyright>Copyright © Microsoft Corporation</copyright>
<tags>aspnetcore</tags>
<dependencies>
<group targetFramework=".NETCoreApp2.0">
<dependency id="Microsoft.AspNetCore" version="2.0.0-preview2-final" />
<dependency id="Microsoft.AspNetCore.Diagnostics" version="2.0.0-preview2-final" />
<dependency id="Microsoft.AspNetCore.Hosting" version="2.0.0-preview2-final" />
<dependency id="Microsoft.AspNetCore.Routing" version="2.0.0-preview2-final" />
<dependency id="Microsoft.AspNetCore.Server.IISIntegration" version="2.0.0-preview2-final" />
<dependency id="Microsoft.AspNetCore.Server.Kestrel" version="2.0.0-preview2-final" />
<dependency id="Microsoft.AspNetCore.Server.Kestrel.Https" version="2.0.0-preview2-final" />
</group>
</dependencies>
</metadata>
</package>
请注意,上面的一些依赖项已被删除,因为All NuGet包依赖于很多NuGet包。
NuGet包依赖项在依赖项部分中定义,您可以选择要依赖的最低版本。另请注意,上面的元包在组内部具有依赖关系,这限制了NuGet包支持的目标框架。下面的另一个例子是Xamarin.GooglePlayServices NuGet包。这里的.nuspec没有为依赖项指定组和目标框架。
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>Xamarin.GooglePlayServices</id>
<version>18.0.0</version>
<title>Xamarin Google Play Services Binding (ICS)</title>
<authors>Xamarin Inc.</authors>
<owners>Xamarin Inc.</owners>
<licenseUrl>http://components.xamarin.com/license/googleplayservices</licenseUrl>
<projectUrl>http://components.xamarin.com/view/googleplayservices</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>C# bindings for google play services.</description>
<copyright>Copyright 2013-2014</copyright>
<dependencies>
<dependency id="Xamarin.Android.Support.v4" version="20.0.0" />
<dependency id="Xamarin.Android.Support.v7.MediaRouter" version="20.0.0" />
<dependency id="Xamarin.Android.Support.v7.AppCompat" version="20.0.0" />
</dependencies>
</metadata>
</package>
如果您的NuGet包支持的目标框架不多,那么最好指定组和目标框架。如果不支持该项目,NuGet将不会尝试安装任何依赖项,并且它会在之前产生错误。