【问题标题】:Create and Publish nuget packages from TFS build process?从 TFS 构建过程创建和发布 nuget 包?
【发布时间】:2014-08-29 12:46:48
【问题描述】:

我想在我的程序集编译后创建 nuget 包(并将它们部署到我的私有 nuget 存储库)。

我尝试使用 NuGetter 设置所有内容,但该项目有点不活跃,仅允许您在我需要一个包/程序集时构建一个包/项目。

现在我有点卡住了。我目前正在查看它们的来源,希望它对我更有用。

我在这里同时要问的是:有没有人有一个完整的解决方案,用于从 TFS 2012 和/或 TFS2010 发布/创建用于多包解决方案的 nuget 包?

【问题讨论】:

  • 您是否查看过 ALM Rangers 的“TFS 版本控制指南 - 使用 NuGet 进行依赖管理”?

标签: tfs nuget publish


【解决方案1】:
I tried setting everything up by using NuGetter, but that project is kind of inactive and only allows you to build one package/project while I need one package/assembly.

NuGetter 确实支持多包,我现在只使用多包方法,因为您可以将它用于单个或多个包。

通过使用包 xml 文件,您可以指定多个包

<?xml version="1.0"?>
<NuGetterPackages>
  <NuGetterPackage name="Package1">
    <NuSpecFilePath>Package1.nuspec</NuSpecFilePath>
    <BasePath>NuGetPrePackage_Package1</BasePath>
    <InvokePowerShell>True</InvokePowerShell>
    <PowerShellScriptPath>PrePackage_Package1.ps1</PowerShellScriptPath>
    <InvokePush>True</InvokePush>
    <OutputDirectory>NuGetPackage</OutputDirectory>
    <PushDestination>\\MYFeedLoc\NugetFeed</PushDestination>
    <Version>1.0.J.B</Version>
  </NuGetterPackage>
<NuGetterPackage name="Package2">
    <NuSpecFilePath>Package2.nuspec</NuSpecFilePath>
    <BasePath>NuGetPrePackage_Package2</BasePath>
    <InvokePowerShell>True</InvokePowerShell>
    <PowerShellScriptPath>PrePackage_Package2.ps1</PowerShellScriptPath>
    <InvokePush>True</InvokePush>
    <OutputDirectory>NuGetPackage</OutputDirectory>
    <PushDestination>\\MYFeedLoc\NugetFeed</PushDestination>
    <Version>1.0.J.B</Version>
  </NuGetterPackage>
</NuGetterPackages>

在源代码控制下,我有 packages.xml 文件,然后每个 Nuget Package 有一个 powershell 文件和一个 nuspec 文件。

Nuspec 文件如下所示

<?xml version="1.0"?>
<package >
  <metadata>
    <id>Package1</id>
    <version>$version$</version>
    <title>Package1</title>
    <authors>Package1 Author</authors>
    <owners>Package1 Owner</owners>
    <iconUrl>http://Iconserver/nextlogo.png</iconUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Description of Contents</description>
    <releaseNotes>First release of the package.</releaseNotes>
    <copyright>Copyright 2014</copyright>
    <tags>Space Seperated Tags</tags>
    <dependencies>
      <dependency id="AnyLatestDependencyIMayHAve" version=""/> 
      <dependency id="AFixedDependencyIMayHAve" version="[1.0.0]"/>
    </dependencies>
  </metadata>
</package>

然后是一个 Powershell 文件,它只是在 Packages.xml 中的 BasePathDeclaration 中创建文件夹结构,这与 NuGetter 站点上显示的文件相同

我在blog添加了完整的解释

【讨论】:

  • 这就是应该的样子。谢谢 :)。但是为什么要为每个项目指定一个 nuspec 文件呢?这是如何运作的?据我所知,这些文件是在构建包之前创建的?!
  • 已扩展答案。一切都是事先创建的。构建运行。创建一个“BasePath”文件夹,powershell 脚本将在其中创建所需的结构,然后将包 dll 复制到该结构中。然后针对结构运行 NuGet 以创建包
猜你喜欢
  • 2015-07-31
  • 2015-12-02
  • 2021-07-04
  • 1970-01-01
  • 1970-01-01
  • 2012-09-15
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多