概述

Azure Artifacts是一个扩展,可以在Azure DevOps中轻松发现,安装和发布NuGet,npm和Maven包。它与Build等其他hub深度集成,因此包管理可以成为现有工作流程的无缝组成部分。

先决条件

  • Visual Studio 2017或更高版本

  • 本实验要求您从先决条件说明中完成任务1和2

练习1:使用Azure Artifacts

Azure Artifacts是Azure DevOps Services和Azure DevOps Server的扩展。它预装在Azure DevOps Services,Azure DevOps Server 2019和Team Foundation Server(TFS)2017和2018中。

任务1:创建并连接到feed

  1. 导航到Artifacts中心。

  2. 单击New Feed。此订阅源将是组织内用户可用的NuGet包的集合,并且可以和公共NuGet订阅源一起使用。本实验中的场景将侧重于展示使用包管理服务的工作流程,因此实际的架构和开发决是说明性的。

  3. 此Feed将包含可在此组织中的项目之间共享的常用功能。将名称设置为“PartsUnlimitedShared”并单击创建。保留默认安全选项。

  4. 任何想要连接到此NuGet feed的用户都必须配置其环境。点击连接到Feed

  5. 复制Package source URL。然后先不要关闭此页面。

  6. 启动Visual Studio的新实例。启动后不要打开之前的Parts Unlimited解决方案。

  7. 选择工具| NuGet包管理器| 包管理器设置

  8. 找到Package Sources部分,然后单击Add按钮添加新的包源。

  9. Name设置为“PartsUnlimitedShared”并粘贴之前复制的Source URL。单击更新,然后单击确定。Visual Studio现在已连接到新的源。

任务2:创建和发布NuGet包

  1. Visual Studio的主菜单中,选择File | 新项目。我们现在将创建一个将作为NuGet包发布的共享程序集,以便其他团队可以集成它并保持最新,而无需直接使用项目源码。

  2. Visual C#部分,选择类库(.Net Framework)模板,并将Name设置为“PartsUnlimited.Shared”。单击确定以创建项目。

  3. Solution Explorer中,删除Class1.cs

  4. 右键单击项目节点,然后选择属性

  5. 目标框架设置为 .NET Framework 4.5.1 并单击以确认更改。

  6. Ctrl + Shift + B构建项目。在下一个任务中,我们将使用NuGet.exe直接从构建的项目生成NuGet包,但它需要首先构建项目。

  7. 返回浏览器并单击下载NuGet +凭据提供程序。将zip文件解压缩到您可以轻松访问的位置。

  8. 返回Visual Studio。从Solution Explorer,右键单击PartsUnlimited.Shared项目节点,然后选择在文件资源管理器中打开文件夹

  9. 将下载的nuget.exeCredentialProvider.VSS.exe文件移动到包含。csproj文件的文件夹中。

  10. 在同一Windows资源管理器窗口中,选择文件| 打开Windows PowerShell | 以管理员身份打开Windows PowerShell

  11. 执行以下命令,从项目中创建.nupkg文件。请注意,这是将NuGet位打包在一起进行部署的快捷方式。NuGet非常可定制,为消费者提供详细信息提供了很大的灵活性。您可以在NuGet包创建页面上了解更多信息。

     ./nuget.exe pack PartsUnlimited.Shared.csproj
    
  12. NuGet根据它能够从项目中获取的信息构建一个最小的包。例如,请注意该名称为PartsUnlimited.Shared.1.0.0.nupkg。该版本号是从程序集中提取的。

  13. 返回Visual Studio。从Solution Explorer,打开Properties \ AssemblyInfo.cs

  14. AssemblyVersion属性指定要构建到程序集中的版本号。每个NuGet版本都需要一个唯一的版本号,因此如果我们继续使用此方法创建包,我们需要记住在构建之前增加它。

  15. 返回到PowerShell窗口并执行以下命令(它应该在一行上)。请注意,您需要提供“API密钥”,它可以是任何非空字符串。我们在这里使用“VSTS”。在被问到时,使用您的Azure DevOps凭据登录。

     ./nuget.exe push -source "PartsUnlimitedShared" -ApiKey VSTS PartsUnlimited.Shared.1.0.0.nupkg
    
  16. 命令应在几秒钟后成功。

  17. 返回到Azure DevOps打开的浏览器窗口,然后刷新窗口。您现在应该看到组织的NuGet包已在Feed中发布。单击它以查看详细信息。

  18. 详细信息已经导入,现在可供其他人使用了。

任务3:导入NuGet包

  1. 切换到Visual Studio的实例,其中打开完整的Parts Unlimited解决方案。

  2. Solution Explorer中,右键单击PartsUnlimitedWebsite项目下的References节点,然后选择Manage NuGet Packages

  3. 单击浏览选项卡,将包源更改为PartsUnlimitedShared。唯一的包将是我们刚刚添加的包,因此请单击Install将其添加到项目中。

  4. 如果询问,请单击确定确认添加。

  5. Ctrl + Shift + B构建项目。它应该成功。NuGet包还没有添加任何值,但至少我们知道它在那里。

任务4:更新NuGet包

  1. 切换到Visual Studio的实例,该项目打开了PartsUnlimited.Shared项目(NuGet源项目)。

  2. Solution Explorer中,右键单击PartsUnlimited.Shared项目节点,然后选择Add | New Item

  3. 选择Class模板并输入名称为“TaxService.cs”。单击添加以添加该类。我们可以假设税收计算将合并到这个共享类中并集中管理,以便其他团队可以简单地使用NuGet包。

  4. 使用以下代码替换新文件中的代码。目前它使用固定10%的费率。

     namespace PartsUnlimited.Shared
     {
         public class TaxService
         {
             static public decimal CalculateTax(decimal taxable, string postalCode)
             {
                 return taxable * (decimal).1;
             }
         }
     }
    
  5. 因为我们正在更新程序集(和程序包),所以返回AssemblyInfo.cs并将AssemblyVersion更新为1.1.0.0

  6. Ctrl + Shift + B构建项目。

  7. 返回到PowerShell窗口并执行以下命令重新打包NuGet包。请注意,新包将具有更新的版本号。

     ./nuget.exe pack PartsUnlimited.Shared.csproj
    
  8. 执行以下命令以发布更新的包。请注意,版本号已更改以反映新包。

     ./nuget.exe push -source "PartsUnlimitedShared" -ApiKey VSTS PartsUnlimited.Shared.1.1.0.nupkg
    
  9. 返回到Azure DevOps打开的浏览器窗口并刷新页面。您仍将查看该软件包的1.0.0版本,但您可以通过选择Versions选项卡并选择1.1.0来更改它。

  10. 切换回Visual Studio的实例,打开主PartsUnlimited项目(带PartsUnlimitedWebsite)。

  11. Solution Explorer,打开PartsUnlimitedWebsite \ Utils \ DefaultShippingTaxCalculator.cs

  12. 定位到CalculateTax文件的第20行附近,并将限定符“PartsUnlimited.Shared.TaxService.”添加到开头。原始代码中调用了此类内部的一个方法,因此我们添加到行开头的代码会将方法调用转到我们的NuGet程序集中的代码。但是,由于该项目还没有更新NuGet包,它仍然引用1.0.0.0并且没有这些新的可用更改,因此代码将无法构建。

  13. Solution Explorer中,右键单击References节点,然后选择Manage NuGet Packages

  14. NuGet会感知到我们的更新,因此请单击更新选项卡查看详细信息。单击更新以使用新版本。如果更新选项卡尚未更新,您仍然可以从浏览选项卡更新软件包。请注意,可能有许多NuGet更新,但您只需要更新PartsUnlimited.Shared。请注意,程序包可能需要一段时间才能完全可用于更新。如果您收到错误,请稍等片刻再试一次。

  15. 如果询问,请单击确定以批准更新。

  16. F5构建并运行该站点。它应该按预期工作。