NuGet包版本和NuGet Id

4

我在我的GitRepo中有一个Project.sln。 我需要使用不同的配置(localqasandboxproduction)构建4个NuGet软件包。 我正在使用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 patcher时,它只生成一个NuGet包文件。在第3步,TeamCity创建一个名为2.2.1.%build.counter%的包。在第6步,它创建了一个同名的包并进行了覆盖。在第9和第12步也是如此。最终,我只有一个具有最后配置(在我的情况下是Production)的NuGet包。

我希望有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) 接下来的问题出现在Octopus上。当TeamCity生成包时(它会生成4个包,但没有AssemblyInfo patcher),它们都具有相同的id(项目)。当我试图将“一些”(比如QA)包部署到QA环境时,Octopus要求我选择NuGet包的id。而Octopus只看到一个id - "Project"。我认为这是TeamCity最后创建的包。


针对您在Octopous部署中遇到的问题,您只需要确保使用适当的软件包名称来区分不同的环境,因此您应该使用2.2.1.%build.counter%-qa等,而不是2.2.1.%build.counter% - Jack Ukleja
2个回答

0

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

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

<?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属性覆盖。这里是一个例子:

enter image description here

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

  2. 现在,您只需将软件包发布到章鱼 nuget 服务器即可。软件包的名称与 id 相同,因此如果您创建了 4 种不同的 .nuspec 配置,则将拥有 4 个具有不同名称但相同版本的软件包。

附:您可以通过在 nuget 包资源管理器中打开它们来检查 nuspec 文件 ( LINK )


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接