Rob*_*nch 4 .net teamcity .net-framework-version nuget teamcity-9.0
我一直在更新 .NET Framework 目标版本的项目,更新到最新的 .NET (4.6.2)。
其中一些项目是在 TeamCity 9.0.2 中构建的 NuGet 包。
我已经使用本指南中的步骤为不同的 .NET Framework 版本创建多个构建配置,因为我尚未更新到 4.6.2 的一些项目引用了 NuGet 包。所以我试图让 TeamCity 使用这些构建配置来输出各种 Net40、Net45、Net46 和 Net462 版本,这样我就可以完全兼容,而无需在更新包时强制升级所有使用 NuGet 的项目。
我真的不知道如何在 TeamCity 中做到这一点。我相当确定这应该在“构建步骤”配置中完成,但到目前为止我还没有设法让它工作。
这么一件事我已经试过,我想我需要做的,但我不知道是重复第一生成步骤和设置Configuration来Release-Net46。我认为这是必要的,否则将无法构建此版本的程序集(如果我错了,请纠正我!)
我尝试的第二件事是复制NuGet Pack步骤和Properties集合,Configuration=Release-Net46但所做的只是用 Net46 替换 Net462 版本,而不是像我希望的那样将两者都包含在工件中。
我还尝试在PropertiesofNuGet Pack中拥有多个Configuration元素,例如Configuration=Release;Configuration=Release-Net46or ,Configuration=Release,Release-Net46但这两个元素都导致构建完全失败,这显然不是答案。
我认为必须有一种方法可以让这个NuGet Pack构建步骤从其他构建配置中获取输出并将程序集的所有可用版本输出到工件。
那可能吗?我曾考虑过为 TeamCity 中的每个构建配置创建单独的项目,但我不确定这是正确的方法还是会导致包源出现问题,并且为每个 .NET Framework 版本复制项目四次似乎不整洁.
好的,我最终通过反复试验和学习 NuSpec 解决了这个问题。请注意,我没有找到完全使用 TeamCity 设置的方法,但这同样好。
我是正确的,你需要额外的构建步骤打造的解决方案/项目层面构建配置的组件和每一个点Configuration在Release-NetX。
编辑我发现它实际上是最好的在上面点NetX构建步骤的.csproj,而不是.sln。这样您就不需要解决方案级别的构建配置,只要它们存在于.csproj那么它就可以正常构建。
完成此操作后,TC 会将所有版本构建到各自的 bin\Release-NetX目录中。
接下来是将.nuspec文件添加到解决方案项目的根目录以构建 NuGet。
<?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>
Run Code Online (Sandbox Code Playgroud)
接下来是更改NuGet PackTeamCity Build Step 和 inSpecification files部分并将其指向您的.nuspec文件。有一个复选框Prefer project files to .nuspec。只需取消选中它,它就对我有用,我什至不需要指向.nuspec文件。
然后在触发构建时,将输出所有版本,然后无需升级引用此包的所有项目即可使用。
| 归档时间: |
|
| 查看次数: |
1485 次 |
| 最近记录: |