小编Jul*_*ing的帖子

使用一个NSIS安装程序在32位操作系统上安装32位二进制文​​件,在64位操作系统上安装64位二进制文​​件?

我目前有两个WIX安装程序用于我维护的产品.一个用于32位操作系统,一个用于64位操作系统.我想将它们组合成一个NSIS安装程序,而不是维护两个单独的安装程序,它可以"确定"操作系统的"位数",然后将相应的二进制文件复制到程序目录中.有没有人有这方面的经验,并可以提供NSIS可用于制作安装程序的工作示例脚本?

installer nsis

14
推荐指数
1
解决办法
9226
查看次数

使用Moq模拟单元测试中的执行延迟

我正在尝试测试以下内容:

protected IHealthStatus VerifyMessage(ISubscriber destination)
{
    var status = new HeartBeatStatus();

    var task = new Task<CheckResult>(() =>
    {
        Console.WriteLine("VerifyMessage(Start): {0} - {1}", DateTime.Now, WarningTimeout);
        Thread.Sleep(WarningTimeout - 500);
        Console.WriteLine("VerifyMessage(Success): {0}", DateTime.Now);
        if (CheckMessages(destination))
        {
            return CheckResult.Success;
        }

        Console.WriteLine("VerifyMessage(Pre-Warning): {0} - {1}", DateTime.Now, ErrorTimeout);
        Thread.Sleep(ErrorTimeout - 500);
        Console.WriteLine("VerifyMessage(Warning): {0}", DateTime.Now);
        if (CheckMessages(destination))
        {
            return CheckResult.Warning;
        }

        return CheckResult.Error;
    });

    task.Start();

    task.Wait();
    status.Status = task.Result;

    return status;
}
Run Code Online (Sandbox Code Playgroud)

通过以下单元测试:

public void HeartBeat_Should_ReturnWarning_When_MockReturnsWarning()
{
    // Arrange
    var heartbeat = new SocketToSocketHeartbeat(_sourceSubscriber.Object, _destinationSubscriber.Object);
    heartbeat.SetTaskConfiguration(this.ConfigurationHB1ToHB2_ValidConfiguration());

    // …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing mstest moq

11
推荐指数
3
解决办法
2万
查看次数

用什么?委托,事件或Func <T>?

我想为类库中的对象提供"输出"消息的能力,而不必担心它是如何输出的.类库可以在控制台应用程序,WinForm或WPF窗口应用程序或网页中使用.

我最初决定使用委托来处理这个问题.我使用类实现了这一点,但是当我试图将委托放入一个固有的每个对象的接口时,编译器不喜欢委托.

我发现我可以将代理移出界面然后能够编译但是我不确定这是否能完成我想要做的事情..它看起来像是一个kludge所以我想问你们是否有人有不同的想法来实现这一目标......

界面:

namespace Test
{
  using System;
  using System.Xml.Linq;

  public interface IAction
  {
    DisplayMessageDelegate DisplayMessage(string message);
    void Execute();
    XElement Serialize(XName elementName);
  }

  public delegate void DisplayMessageDelegate(string message);
}
Run Code Online (Sandbox Code Playgroud)

从那里,我不知道如何实现这种行为:( 顺便说一句,我知道这段代码不会编译......)

public class ActionClass1 : IAction
{
  // Other methods not shown...
  void Execute()
  {
    if (this.DisplayMessage != null)
    {
      this.DisplayMessage(“Hello”);
    }
  }
}

public class ConsoleClass
{
  ActionClass1 class1 = new ActionClass1();
  class1.DisplayMessage = { x =>  Console.WriteLine(x); };
}

public class WinFormClass
{
  ActionClass1 class1 = new …
Run Code Online (Sandbox Code Playgroud)

c# events lambda delegates

7
推荐指数
2
解决办法
7273
查看次数

从 PowerShell 调用 Windows 运行时类

有没有办法从 PowerShell 脚本调用 Windows 运行时 (WinRT) 类(或对象)?我知道您可以调用 COM 对象,WinRT 类应该“公开”为……但到目前为止我的尝试都失败了……

这是我正在尝试的代码:

$lockscreen = New-Object -comObject Windows.System.UserProfile.LockScreen
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

New-Object : Retrieving the COM class factory for component with CLSID {00000000-0000-0000-0000-000000000000} failed
due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
Run Code Online (Sandbox Code Playgroud)

有谁知道我应该用于 WinRT 类的正确“COM 类”吗?

powershell windows-runtime

6
推荐指数
2
解决办法
4007
查看次数