我从客户端收到VmWare映像用于某些测试目的.我需要将其转换为Hyper-V.我按照http://www.askme4tech.com/how-convert-vmware-virtual-machine-hyper-v中的步骤进行操作.我安装了Microsoft Virtual Machine Converter并开始在PowerShell中转换虚拟磁盘.但是我变得很恐怖:
C:\Windows\system32> ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "c:\temp\disk2.vmdk" -DestinationLiteralPath "c:\data\HyperV\PH\" -VhdType DynamicHardDisk -VhdFormat Vhdx
ConvertTo-MvmcVirtualHardDisk : The entry 1 is not a supported disk database entry for the descriptor.
At line:1 char:1
+ ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "c:\temp\disk2.vmdk"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Accel...nversionService:DriveConversionService) [ConvertTo-MvmcVirtualHardDisk], VmdkDescriptorParseException
+ FullyQualifiedErrorId : DiskConversion,Microsoft.Accelerators.Mvmc.Cmdlet.Commands.ConvertToMvmcVirtualHardDiskCommand
ConvertTo-MvmcVirtualHardDisk : One or more errors occurred.
At line:1 char:1
+ ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "c:\temp\disk2.vmdk"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (Microsoft.Accel...nversionService:DriveConversionService) [ConvertTo-MvmcVirtualHardDisk], AggregateException
+ FullyQualifiedErrorId : DiskConversion,Microsoft.Accelerators.Mvmc.Cmdlet.Commands.ConvertToMvmcVirtualHardDiskCommand
Run Code Online (Sandbox Code Playgroud) 我需要SignalR开发人员的一些指导,这是调整HUB方法参数序列化的最佳方法.
我开始将我的项目从WCF轮询双工(Silverlight 5 - ASP.NET 4.5)迁移到SignalR(1.1.2).消息(数据契约)是基于接口的多态的.(与IMessage,MessageA:IMessage等一样 - 实际上存在由类实现的接口的层次结构,但它对于该问题并没有多大意义).(我知道多态对象不适合客户端,但客户端会将其作为JSON处理,并且只有在服务器端或客户端上才能映射到对象(如果它是.NET/Silverlight)
在集线器上我定义了这样的方法:
public void SendMessage(IMessage data) { .. }
Run Code Online (Sandbox Code Playgroud)
我创建了自定义JsonConverters并验证了可以使用Json.NET对消息进行序列化/反序列化.然后我用适当的设置替换了DependencyResolver中的JsonNetSerializer.同样在Silverlight客户端.到现在为止还挺好.
但是当我将消息从客户端发送到服务器(消息被正确地序列化为JSON - 在Fiddler中验证)时,服务器返回错误,该参数无法反序列化.在调试器的帮助下,我在SignalR中发现了一个错误(负责反序列化的JRawValue类在内部创建了自己的JsonSerializer实例,忽略了提供的一个).通过替换看起来很容易解决
var settings = new JsonSerializerSettings
{
MaxDepth = 20
};
var serializer = JsonSerializer.Create(settings);
return serializer.Deserialize(jsonReader, type);
Run Code Online (Sandbox Code Playgroud)
同
var serializer = GlobalHost.DependencyResolver.Resolve<IJsonSerializer>();
return serializer.Parse(jsonReader, type);
Run Code Online (Sandbox Code Playgroud)
但我也发现在未来版本的SignalR中将删除IJsonSerializer接口.基本上,我需要从HUB方法获取原始JSON(或字节流),以便我可以自己反序列化它,或者通过指定转换器等来调整序列化器的可能性.
现在我最终用JObject参数类型定义了方法:
public void SendMessage(JObject data)
Run Code Online (Sandbox Code Playgroud)
然后使用手动反序列化数据
JObject.ToObject<IMessage>(JsonSerializer)
Run Code Online (Sandbox Code Playgroud)
方法.但我更喜欢自定义序列化程序并在hub方法上使用类型/接口.关于下一个SignalR设计的"正确方法"是什么?
我还发现有可能从我的代码发送回客户端原始JSON,即使SignalR再次序列化对象.我怎么能实现这个目标?
我正在尝试导入plotly.js
TypeScript.使用Plotly.js安装npm
.在我使用的TypeScript文件中
import 'plotly.js';
Run Code Online (Sandbox Code Playgroud)
没关系但我在代码上遇到错误Plotly.<member>
:
error TS2304: Cannot find name 'Plotly'
Run Code Online (Sandbox Code Playgroud)
当我尝试
import Plotly = require('plotly.js');
Run Code Online (Sandbox Code Playgroud)
我越来越
error TS2307: Cannot find module 'plotly.js'.
Run Code Online (Sandbox Code Playgroud) 在Typescript中,当存在无法访问的代码时,编译器默认生成错误:
error TS7027: Unreachable code detected.
Run Code Online (Sandbox Code Playgroud)
我可以通过使用编译器选项allowUnreachableCode
来避免它,true
但我可以以某种方式更改它以警告?
我仍然想知道无法访问的代码.在开发和调试期间,我有时会使用if (false)
临时删除某些功能,这比注释代码更好,特别是当代码本身包含注释时.
在C#中,无法访问的代码会生成警告(我可以通过其他选项将其视为错误),这在我看来更好的方式来处理它.
我在Visual Studio 2015中使用Resharper来运行测试.然而,我对状态感到困惑Test not run
- 他们在成功和失败都存在.如果我单独运行其中一个这样的测试,状态临时更改为Pending: Test not run
然后返回Success: Test not run
.我无法找到测试未运行的任何信息.此外,我不明白为什么状态是成功(或失败),如果没有运行测试 - 它怎么知道?
我应该如何解释状态,以及如何使其运行所有测试?
(使用VS 2015 Enterprise Update 1,Resharper Ultimate 10.0.2,这两款都是最新的,测试框架是MsTest)
如何使Json.NET序列化程序将IDictionary<,>
实例序列化为具有键/值属性的对象数组?默认情况下,它将Key的值序列化为JSON对象的属性名称.
基本上我需要这样的东西:
[{"key":"some key","value":1},{"key":"another key","value":5}]
Run Code Online (Sandbox Code Playgroud)
代替:
{{"some key":1},{"another key":5}}
Run Code Online (Sandbox Code Playgroud)
我尝试添加KeyValuePairConverter
到序列化程序设置但它没有任何效果.(我发现这个转换器被忽略的类型IDictionary<>
,但因为它们是从其他图书馆接收,所以从改变我不能轻易改变我的对象的类型IDictionary<>
,以ICollection<KeyValuePair<>>
不选择我.)
使用Angular 5,带有scss的angular-cli。
我正在创建使用第三方组件(angular-tree-component)的角度组件。我需要为树导入样式。由于在angular中使用样式隔离(使用默认的仿真视图封装),因此,实现它的唯一方法是使用::ng-deep
,如下所示:
:host ::ng-deep {
@import '~angular-tree-component/dist/angular-tree-component.css';
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用-好像在中@import
被忽略了:host ::ng-deep
。我通过直接在方括号内复制css文件的内容来解决该问题,但是它的效果不是最佳,就好像参考包已升级一样,那么我将不得不用新样式手动替换内容。
我只能想到的其他解决方法是将视图封装更改为,None
但由于它使样式成为全局样式,因此看起来甚至更糟。
有没有更好的选择?
我该如何使用DataflowBlockOptions.CancellationToken
?
BufferBlock
如果我创建这样的实例:
var queue = new BufferBlock<int>(new DataflowBlockOptions { BoundedCapacity = 5, CancellationToken = _cts.Token });
那么使用使用的消费者/生产者方法queue
,我如何使用它的 CancellationToken 来处理取消?
例如,在生产者方法中,如何检查取消令牌 - 我没有找到任何属性来访问令牌。
编辑:生产/消费方法示例:
private static async Task Produce(BufferBlock<int> queue, IEnumerable<int> values)
{
foreach (var value in values)
{
await queue.SendAsync(value);
}
queue.Complete();
}
private static async Task<IEnumerable<int>> Consume(BufferBlock<int> queue)
{
var ret = new List<int>();
while (await queue.OutputAvailableAsync())
{
ret.Add(await queue.ReceiveAsync());
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
调用它的代码:
var queue = new BufferBlock<int>(new DataflowBlockOptions { BoundedCapacity = …
Run Code Online (Sandbox Code Playgroud) 我创建了源自的服务
ServiceStack.ServiceInterface.Service
Run Code Online (Sandbox Code Playgroud)
实施一些要求.这个服务实例的生命周期是多少 - 例如,每次调用是创建了一个新实例还是缓存了实例?
c# ×2
typescript ×2
angular ×1
angular-cli ×1
hyper-v ×1
json.net ×1
plotly ×1
resharper ×1
servicestack ×1
signalr ×1
signalr-hub ×1
tpl-dataflow ×1
unit-testing ×1
virtual-disk ×1
vmware ×1