临时解决方案我从TFS Web界面导出了构建定义json文件。为了比较,我从API导出了构建定义对象,并且json文件看起来不同,这就是问题所在。现在我将使用api对象json。
我安装了TFS2018,我正在导入一个导出的json构建文件,如下所示:
var filePath = "builddefinition.json";
var buildDef = JsonConvert.DeserializeObject<BuildDefinition>(File.ReadAllText(filePath));
文件导入成功。但是,不会导入步骤。以下是导出的json文件的一部分,显示了第一步。我总共有7个步骤。
"process": {
"phases": [
{
"steps": [
{
"environment": {},
"enabled": true,
"continueOnError": false,
"alwaysRun": false,
"displayName": "Use NuGet 4.3.0",
"timeoutInMinutes": 0,
"condition": "succeeded()",
"refName": "NuGetToolInstaller1",
"task": {
"id": "2c645196a-524fd-4a402-92be8-d9d4837b7c5d",
"versionSpec": "0.*",
"definitionType": "task"
},
"inputs": {
"versionSpec": "4.3.0",
"checkLatest": "false"
}
},
{... more steps
但是如果我从api获得构建定义,我会得到所有步骤。
var buildDef = buildClient.GetDefinitionAsync("MyProject", builddefid);
在从json文件中读取步骤时,知道为什么步骤没有序列化到对象中?
答案 0 :(得分:2)
从Web界面和对象API导出的Json文件的内容/格式不同。
因此,您需要在对中导出/导入构建定义json文件。这意味着从Web界面导出然后从Web界面导入,通过API导出,然后通过API再次导入。
本文供您参考:TFS 2015 clone/import/export build definition between team projects