培训
模块
创建新的 .NET 项目并使用包依赖项 - Training
创建 .NET 项目并了解如何在项目中添加包和管理包依赖项。 通过 Visual Studio Code 使用 .NET Core CLI 和 NuGet 注册表,向 C# 应用程序添加库和工具。
NuGet 2.2.1 发行说明 | NuGet 2.6 发行说明
NuGet 2.5 已于 2013 年 4 月 25 日发布。 由于此版本过大,因此我们认为不得不跳过版本 2.3 和 2.4! 到目前为止,这是我们为 NuGet 发布的最大版本,其中包含超过 [160 work items](https://nuget.codeplex.com/workitem/list/advanced?release=NuGet%202.5&status=all)
。
我们想感谢以下外部参与者对 NuGet 2.5 做出的重大贡献:
[Daniel Plaisted](https://www.codeplex.com/site/users/view/dsplaisted)
(@dsplaisted) [#2847](https://nuget.codeplex.com/workitem/2847)
- 将 MonoAndroid、MonoTouch 和 MonoMac 添加到已知目标框架标识符列表中。[Andres G. Aragoneses](https://www.codeplex.com/site/users/view/knocte)
(@knocte) [#2865](https://nuget.codeplex.com/workitem/2865)
- 修复针对区分大小写的 OS 的 NuGet.targets
拼写问题[David Fowler](https://www.codeplex.com/site/users/view/dfowler)
(@davidfowl) [Andrew Theken](https://www.codeplex.com/site/users/view/atheken)
(@atheken) [Olivier Dagenais](https://www.codeplex.com/site/users/view/OliIsCool)
(@OliIsCool) [#2920](https://nuget.codeplex.com/workitem/2920)
- nuget.exe pack 命令未将“属性”传播到 MSBuild[Miroslav Bajtos](https://www.codeplex.com/site/users/view/MiroslavBajtos)
(@bajtos) [#1511](https://nuget.codeplex.com/workitem/1511)
- 已修改 XML 处理代码以保留格式设置功能。[Adam Ralph](http://www.codeplex.com/site/users/view/adamralph)
(@adamralph) [Bruno Roggeri](https://www.codeplex.com/site/users/view/broggeri)
[Gareth Evans](https://www.codeplex.com/site/users/view/garethevans)
[Maxime Brugidou](https://www.codeplex.com/site/users/view/brugidou)
(@brugidou) [#936](https://nuget.codeplex.com/workitem/936)
- 打包时处理项目依赖项[Xavier Decoster](https://www.codeplex.com/site/users/view/XavierDecoster)
(@XavierDecoster) [#2991](https://nuget.codeplex.com/workitem/2991)
、[#3164](https://nuget.codeplex.com/workitem/3164)
- 在 nuget.cofig 文件中存储包源凭据时,支持明文密码[James Manning](http://www.codeplex.com/site/users/view/jmanning)
(@manningj) [#3190](http://nuget.codeplex.com/workitem/3190)
、[#3191](https://nuget.codeplex.com/workitem/3191)
- 修复 Get-Package 帮助说明我们还想感谢以下个人查找 NuGet 2.5 Beta/RC 中的 bug,而这些 bug 已在最终发布之前获得批准并修复:
[Tony Wall](https://www.codeplex.com/site/users/view/CodeChief)
(@CodeChief) [#3200](https://nuget.codeplex.com/workitem/3200)
- MSTest 与最新的 NuGet 2.4 和 2.5 内部版本中断一直以来,请求最多的功能之一是:当内容文件包含在 NuGet 包中时,能覆盖已存在于磁盘上的内容文件。 从 NuGet 2.5 开始,系统会识别这些冲突并提示覆盖这些文件,而此前始终会跳过这些文件。
“nuget.exe update”和“Install-Package”现在均有一个新选项“-FileConflictAction”,它可用于为命令行场景设置默认值。
设置当目标项目中已存在来自包的某一文件时的默认操作。 设为“Overwrite”可始终覆盖文件。 设为“Ignore”可跳过文件。 如果未指定,则会为每个冲突的文件进行提示。
现已在 NuGet 包的顶层创建新的传统文件夹。 作为 \lib
、\content
和 \tools
的对等方,现可在包中包含 \build
文件夹。 在此文件夹中,可放置两个采用固定名称的文件:{packageid}.targets
或 {packageid}.props
。 这两个文件可直接位于 build
中,也可位于特定于框架的文件夹中,就像其他文件夹一样。 用于选取最佳匹配框架文件夹的规则与在这些文件夹中进行选取完全相同。
当 NuGet 使用 \build 文件安装包时,它会在指向 .targets
和 .props
文件的项目文件中添加 MSBuild <Import>
元素。 .props
文件将添加到顶部,而 .targets
文件将添加到底部。
在 2.5 版本之前,在 .nuspec
文件中,用户只能指定要为所有框架添加的引用文件。 现在,借助 2.5 版本中的此功能,用户可为每个受支持的平台分别创作 <reference/>
元素,例如:
<references>
<group targetFramework="net45">
<reference file="a.dll" />
</group>
<group targetFramework="netcore45">
<reference file="b.dll" />
</group>
<group>
<reference file="c.dll" />
</group>
</references>
下方演示了 NuGet 如何基于 .nuspec
文件来添加项目的引用:
lib
文件夹,并从该文件夹获取程序集列表此新功能允许包作者使用引用功能将程序集子集应用于不同框架,否则他们需在多个 lib
文件夹中携带重复的程序集。
注意:目前,必须使用 nuget.exe pack 来使用此功能,而 NuGet 包资源管理器尚不支持此功能。
很多人都知道用于更新所有包的“Update-Package”PowerShell cmdlet;现在,还有一种简易方法可通过 UI 来实现此操作。
若要试用此功能,请:
现在,nuget.exe pack 命令使用以下规则来处理引用的项目:
.nuspec
文件(即,在 proj1.csproj
所在文件夹中存在名为 proj1.nuspec
的文件),则此项目将作为依赖项添加到包中,并使用从 .nuspec
文件读取的 ID 和版本。.pdb
和 .exe
文件均会添加。这样,如果存在 .nuspec
文件,则会将引用的项目视为依赖项,否则它将成为包的一部分。
有关更多详细信息,请访问此处:[http://nuget.codeplex.com/workitem/936](http://nuget.codeplex.com/workitem/936)
名为“minClientVersion”的新元数据属性现在可指示使用包所需的最低 NuGet 客户端版本。
此功能可帮助包作者指定仅在特定版本的 NuGet 之后才有效的包。 由于在 NuGet 2.5 之后添加了新的 .nuspec
功能,因此包可声明最低 NuGet 版本。
<metadata minClientVersion="2.6">
如果用户已安装 NuGet 2.5,并将包标识为需要 2.6 版本,则会向用户提供视觉提示,从而指示该包不可安装。 然后,将引导用户更新其 NuGet 版本。
这样,便可改善现有体验的以下问题:包开始安装,但随后失败并指示“发现无法识别的架构版本”。
在 NuGet 2.5 之前,当安装依赖于项目中已安装的某一包的包时,即使现有版本满足依赖项,依赖项也会作为新安装的一部分进行更新。
从 NuGet 2.5 开始,如果已满足依赖项版本,依赖项则不会在其他包安装期间进行更新。
场景:
在 NuGet 2.2 及先前版本中:
在 NuGet 2.5 及以上版本中:
有关此更改的更多背景信息,请阅读详细的 [work item](https://nuget.codeplex.com/workitem/1681)
以及相关的 [discussion thread](https://nuget.codeplex.com/discussions/436712)
。
如果要对 nuget.exe 进行故障排除,或只是好奇在操作期间发出了哪些 HTTP 请求,“-verbosity detailed”开关现在便可输出所有已发出的 HTTP 请求。
在 NuGet 2.5 之前,如果尝试基于 UNC 路径或本地文件夹来运行针对包源的“nuget.exe push”,此推送操作则会失败。 借助最近添加的分层配置功能,nuget.exe 必须面向 UNC/文件夹源或基于 HTTP 的 NuGet 库已成为一项常规设置。
从 NuGet 2.5 开始,如果 nuget.exe 标识了 UNC/文件夹源,它则会执行将文件复制到源的操作。
现在,以下命令将起作用:
nuget push -source \\mycompany\repo\ mypackage.1.0.0.nupkg
访问配置(除“spec”和“pack”之外的所有配置)的 nuget.exe 命令现在支持新的“-ConfigFile”选项。该选项会强制使用特定的配置文件来代替 %AppData%\nuget\Nuget.Config 中的默认配置文件。
示例:
nuget sources add -name test -source http://test -ConfigFile C:\test\.nuget\Nuget.Config
借助 NuGet 2.5,NuGet 工具现可用于 Visual Studio 中的本机项目。 我们预计大多数本机包将使用以上 MSBuild 导入功能(借助 CoApp 项目创建的工具)。 有关详细信息,请阅读 coapp.org 网站上有关此工具的详细信息。
将包安装到本机项目时,会为包引入“本机”目标框架名称,以便包含 \build、\content 和 \tools 中的文件。 “lib”文件夹不会用于本机项目。
培训
模块
创建新的 .NET 项目并使用包依赖项 - Training
创建 .NET 项目并了解如何在项目中添加包和管理包依赖项。 通过 Visual Studio Code 使用 .NET Core CLI 和 NuGet 注册表,向 C# 应用程序添加库和工具。