从TFS构建过程创建和发布nuget包?

时间:2014-08-29 12:46:49

标签: tfs nuget publish

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

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

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

我在这里并行提出的问题是:有没有人有完整的解决方案来发布/创建TFS 2012和/或TFS2010的nuget软件包用于多包解决方案?

1 个答案:

答案 0 :(得分:3)

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

添加了完整的说明