繁体   English   中英

适用于不同.NET框架的TeamCity NuGet包构建

[英]TeamCity NuGet package build for different .NET Frameworks

我一直在更新.NET Framework目标版本的项目更新到最新的.NET(4.6.2)。

其中一些项目是NuGet包,内置在TeamCity 9.0.2中。

我已经使用指南中的步骤为不同的.NET Framework版本创建多个构建配置,因为我尚未更新到4.6.2的一些项目引用了NuGet包。 因此,我试图让TeamCity使用这些构建配置来输出各种Net40,Net45,Net46和Net462版本,这样我就可以完全兼容,而无需在更新软件包时升级使用NuGet的所有项目。

我真的无法弄清楚如何在TeamCity中做到这一点。 我很确定这应该在“构建步骤”配置中完成,但到目前为止我还没有设法让它工作。

当前的构建步骤

所以我尝试了一件事,我认为我需要做但不确定是重复第一个构建步骤并将ConfigurationRelease-Net46 我认为这是必要的,否则这个版本的程序集将无法构建(如果我错了,请纠正我!)

我尝试的第二件事是复制NuGet Pack步骤,在Properties集中Configuration=Release-Net46但所有这一切都是用Net46替换Net462版本,而不是像我希望的那样在工件中包含这两者。

我还尝试在NuGet PackProperties中拥有多个Configuration元素,如Configuration=Release;Configuration=Release-Net46Configuration=Release,Release-Net46但这两个都导致构建完全失败,所以这不是答案。

NuGet Pack属性

我认为必须有一种方法可以让这个NuGet Pack构建步骤从其他构建配置中获取输出,并将所有可用的程序集版本输出到工件。

那可能吗? 我曾考虑为TeamCity中的每个构建配置创建单独的项目,但我不确定这是否是正确的方式,或者是否会导致包源问题,并且对于每个.NET Framework版本复制项目四次都显得不整齐。

好的,我最终通过反复试验和了解NuSpec来解决这个问题。 注意,我没有找到使用纯粹TeamCity设置的方法,但这同样很好。

我是正确的,您需要额外的构建步骤来在解决方案/项目级构建配置中构建程序集,并将每个Configuration指向Release-NetX

TeamCity构建步骤

编辑我发现它实际上最好在上面指出.csproj而不是.slnNetX构建步骤。 这样你就不需要在解决方案级别的构建配置,只要它们存在于.csproj那么它将全部构建良好。

完成此操作后,TC将在其各自的bin\\Release-NetX目录中构建所有版本。

接下来是将.nuspec文件添加到解决方案项目的根目录以构建NuGet for。

<?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>Foo.Bar.Package</id>
    <version>1.0.23</version>
    <authors>FooBar Industries</authors>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>FooBar Industries package</description>
  </metadata>
  <files>
    <file src="bin\Release\*.dll" target="lib\net462" />
    <file src="bin\Release-Net46\*.dll" target="lib\net46" />
    <file src="bin\Release-Net45\*.dll" target="lib\net45" />
    <file src="bin\Release-Net4\*.dll" target="lib\net40" />
  </files>
</package>

接下来是更改NuGet Pack TeamCity构建步骤和Specification files部分,并将其指向您的.nuspec文件。 有一个Prefer project files to .nuspec的复选框。 它只是通过取消选中我的工作,我甚至不需要指向.nuspec文件。

TeamCity NuGet Pack构建步骤

然后在触发构建时,输出所有版本,然后可以使用而不升级引用此包的所有项目。

在此输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM