C# 如何利用Cake构建脚本中的JSON.Net?

C# 如何利用Cake构建脚本中的JSON.Net?,c#,json.net,cakebuild,C#,Json.net,Cakebuild,我想在Cake build脚本中使用json.net序列化和反序列化json,但仍停留在如何引用它上。引用Newtonsoft json.net最简单的方法是通过指令。例如,用法: #附加程序包ID 由于它不是“本机”蛋糕加载项,您需要向名称空间添加using或使用您想要使用的类型的完全限定名。例如,将using放在构建脚本的顶部: 使用Newtonsoft.Json 或使用完全限定的类型名: Newtonsoft.Json.JsonConvert.SerializeObject(…) 除此之外

我想在Cake build脚本中使用json.net序列化和反序列化json,但仍停留在如何引用它上。

引用Newtonsoft json.net最简单的方法是通过指令。例如,用法:

#附加程序包ID

由于它不是“本机”蛋糕加载项,您需要向名称空间添加using或使用您想要使用的类型的完全限定名。例如,将using放在构建脚本的顶部:

使用Newtonsoft.Json

或使用完全限定的类型名:

Newtonsoft.Json.JsonConvert.SerializeObject(…)

除此之外,它只是“常规”C#

下面是一个完整的示例:

#addin "nuget:https://www.nuget.org/api/v2?package=Newtonsoft.Json"
using Newtonsoft.Json;

public class MissingPerson
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

var john = new MissingPerson {
    FirstName = "John",
    LastName = "Doe"
};


// Serialize and output MissingPerson as json
Information(
    "MissingPerson as json: {0}",
    JsonConvert.SerializeObject(john, Formatting.Indented)
    );

/*
 * This will output
 * MissingPerson as json: {
 *   "FirstName": "John",
 *   "LastName": "Doe"
 * }
 */


var jsonMissingPerson = "{\"FirstName\": \"Jane\",\"LastName\": \"Doe\"}";

// Deserialize json string to object
var jane = JsonConvert.DeserializeObject<MissingPerson>(jsonMissingPerson);
Information(
    "Missing Person from json:\r\n\tFirstName: {0}\r\n\tLastName: {1}",
    jane.FirstName,
    jane.LastName
    );

/*
 * This will output
 * Missing Person from json:
 *        FirstName: Jane
 *        LastName: Doe
 */
#addin“nuget:https://www.nuget.org/api/v2?package=Newtonsoft.Json"
使用Newtonsoft.Json;
公务舱失踪人员
{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
}
var john=新失踪人员{
FirstName=“约翰”,
LastName=“Doe”
};
//将MissingPerson序列化并输出为json
信息(
“缺少作为json的人员:{0}”,
序列化对象(john,Formatting.Indented)
);
/*
*这将输出
*缺少作为json的人员:{
*“名字”:“约翰”,
*“姓氏”:“能源部”
* }
*/
var jsonMissingPerson=“{\“FirstName\”:\“Jane\”,\“LastName\”:\“Doe\”}”;
//将json字符串反序列化为对象
var jane=JsonConvert.DeserializeObject(jsonMissingPerson);
信息(
“json中的失踪人员:\r\n\t域名:{0}\r\n\t域名:{1}”,
简,名字,
简,姓
);
/*
*这将输出
*json失踪人员:
*名字:简
*姓氏:Doe
*/

上面的示例还指定了获取包的NuGet提要,这是该指令非常强大的一部分。这意味着您可以从预发布或私有提要获取程序集

另一种解决方案可能是使用Addin。这是有案可查的。它为标准功能提供别名方法,例如:

  • 连载
  • 反序列化
只需添加以下内容,即可将其包含在蛋糕脚本中:


#addin“Cake.Json”

您可以添加一个吗?或者至少你通常在哪里/如何工作,就像一个魔咒,这正是我要找的!谢谢你,马蒂亚斯!