NuGet包版本和NuGet Id

时间:2015-12-07 19:58:19

标签: .net nuget teamcity octopus-deploy assemblyinfo

我的GitRepo中有一个 Project.sln 。我需要构建4个具有不同配置的NuGet包(本地 qa 沙箱生产)。我正在使用TeamCity和Octopus Deploy。

在TeamCity中,我的构建配置具有以下构建步骤:

1) NuGet Installer
2) Build Project.sln with *Local* Configuration
3) NuGet Pack with using .csproj file

4) NuGet Installer
5) Build Project.sln with *QA* Configuration
6) NuGet Pack with using .csproj file

7) NuGet Installer
8) Build Project.sln with *Sandbox* Configuration
9) NuGet Pack with using .csproj file

10) NuGet Installer
11) Build Project.sln with *Production* Configuration
12) NuGet Pack with using .csproj file

我有以下问题:

1)当我使用 AssemblyInfo修补程序时,它只生成一个NuGet包文件。在第3步中,TeamCity创建一个名为 2.2.1。%build.counter%的包。在第6步,它创建一个具有相同名称的包并覆盖它。它在第9步和第12步中也是如此。最后,我只有一个包含最后配置的NuGet包(在我的例子中是 Production )。

我希望有4个包,如:

2.2.1.%build.counter%_local
2.2.1.%build.counter%_qa
2.2.1.%build.counter%_sandbox
2.2.1.%build.counter%_production

2)下一个问题是八达通。当TeamCity创建包(它生成4个包,但没有 AssemblyInfo修补程序)时,它会使它们具有相同的ID(Project),并且当我尝试部署“some”时(让它成为QA)打包到QA环境,Octopus要求我选择NuGet包的 id 。它只能看到一个 id - “ Project ”。我认为这是TeamCity创建的最后一个包。

2 个答案:

答案 0 :(得分:0)

我建议为您需要的每个NuGet包创建TeamCity配置。或者手动修补和构建,而不是内置的NuGet支持。

答案 1 :(得分:0)

您可以通过.nuspec文件创建nuget包(nuget pack步骤)来实现目标。

以下是此文件最常见的示例(在您的情况下为4个中的1个)

<?xml version="1.0"?>
<package xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <metadata xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <id>yourProcjectName.qa</id>
    <version>1.0.0</version>
    <authors>Jay Hamlin</authors>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Simple Description</description>
  </metadata>
  <files>
    <file src="bin\Release\*.dll" target="lib" />
  </files>
</package>
  1. 首先在'id'部分指定自定义nuget包ID
  2. “版本”部分可以由TeamCity属性覆盖。这是一个例子:
  3. enter image description here

    1. Nuget pack将创建包并从模板命名:{package_id}。{version} .nupkg(或{version}。{package_id} .nupkg - 我不记得了)

    2. 现在您必须简单地将您的包发布到章鱼nuget服务器。包将与id具有相同的名称,因此如果您创建4个不同的.nuspec配置,您将拥有4个包含不同名称但版本相同的包。

    3. 聚苯乙烯。您可以通过在nuget包资源管理器(LINK

      中打开它们来检查您的nuspec文件