为了在Google Chrome浏览器中安装外部扩展程序,我尝试更新chrome外部扩展json文件.使用Json.NET它似乎很容易:
string fileName = "..."; // path to chrome external extension json file
string externalExtensionsJson = File.ReadAllText(fileName);
JObject externalExtensions = JObject.Parse(externalExtensionsJson);
Run Code Online (Sandbox Code Playgroud)
但我得到一个Newtonsoft.Json.JsonReaderException说法:
"Error parsing comment. Expected: *, got /. Path '', line 1, position 1."
Run Code Online (Sandbox Code Playgroud)
在调用时,JObject.Parse因为此文件包含:
// This json file will contain a list of extensions that will be included
// in the installer.
{
}
Run Code Online (Sandbox Code Playgroud)
和注释不是json的一部分(如何在Json.NET输出中添加注释?).
我知道我可以用正则表达式删除注释(正则表达式删除javascript双斜杠(//)样式注释)但我需要在修改后将json重写到文件中并保持评论可能是一个很好的想法.
问题:有没有办法在没有删除它们的情况下读取带有注释的json并能够重写它们?
我需要将http post请求中的大量数据发送到支持gziped编码请求的服务器.
从简单开始
public async Task<string> DoPost(HttpContent content)
{
HttpClient client = new HttpClient();
HttpResponseMessage response = await client.PostAsync("http://myUri", content);
response.EnsureSuccessStatusCode();
return await response.Content.ReadAsStringAsync();
}
Run Code Online (Sandbox Code Playgroud)
我刚刚添加了预压缩
public async Task<string> DoPost(HttpContent content, bool compress)
{
if (compress)
content= await CompressAsync(content);
return await DoPost(content);
}
private static async Task<StreamContent> CompressAsync(HttpContent content)
{
MemoryStream ms = new MemoryStream();
using (GZipStream gzipStream = new GZipStream(ms, CompressionMode.Compress, true))
{
await content.CopyToAsync(gzipStream);
await gzipStream.FlushAsync();
}
ms.Position = 0;
StreamContent compressedStreamContent = new StreamContent(ms);
compressedStreamContent.Headers.ContentType = content.Headers.ContentType; …Run Code Online (Sandbox Code Playgroud) 我有一个小应用程序,应该以两种模式执行:非UI或WPF窗口.它应该依赖于命令行参数.
在每种模式中,我都需要显示一些反馈日志:
我已经找到:
而且我知道我可以在项目属性中静态选择"Windows应用程序"或"控制台应用程序".
选择"Windows应用程序",GetConsoleWindow()始终为0,我看不到如何重用以前的控制台.
选择"控制台应用程序",我可以重用以前的控制台,但是当在WPF窗口模式下从资源管理器启动时,会在我的WPF主窗口下创建一个控制台.
问题是:应用程序如何真正动态?在WPF窗口模式下,只有一个WPF窗口(根本没有控制台)或非UI,只有一个控制台(启动一个或新创建的控制台).