希望有人可以在这里提供帮助。我正在尝试版本自托管的流浪汉盒,所以在不使用vagrant cloud的情况下这样做。
我已经创建了以下元数据文件:
{
"description": "How about this",
"name": "Graphite",
"versions": [
{
"version": "1.8",
"providers": [
{
"name": "virtualbox",
"url": "http://desktopenvironments/Graphite/Graphite_1.8.box"
}
]
}
]
}
这是直接从vagrant(某些缺乏)文档中获取的,网址为:http://docs.vagrantup.com/v2/boxes/format.html。
运行vagrant add(获取直接从磁盘中包含此文件的框文件)时,我会得到:
The metadata associated with the box 'graphite' appears corrupted.
This is most often caused by a disk issue or system crash. Please
remove the box, re-add it, and try again.
关于为什么会发生这种情况的任何帮助。
正在从我编写的C#应用程序中生成我的元数据文件,并使用UTF8进行文本编码。这还不够。您需要在没有BOM的情况下使用UTF8。一旦删除字节订单标记,它都可以正常工作。
var settings = new JsonSerializerSettings() { ContractResolver = new LowercaseContractResolver() };
string json = JsonConvert.SerializeObject(metadata, Formatting.None, settings);
var utf8WithoutBom = new System.Text.UTF8Encoding(false);
using (var sink = new StreamWriter(outputFilePath, false, utf8WithoutBom))
{
sink.Write(json);
}