小编Max*_*ton的帖子

设置WPF桌面应用程序的持续部署

对于我目前正在进行的项目,我需要为现有的桌面应用程序创建一个安装应用程序.安装应用程序将从网站下载,并将所需文件下载到正确的位置.启动应用程序时,它将查找这些文件的较新版本,如果存在则下载它们,然后启动应用程序.

我正在使用Visual Studio Online和TFVC,链接到Azure.我设置了一个测试应用程序,这样当我触发构建时,Release Management会找到构建目录,并将文件移动到Azure Blob存储,但会为正在传输的文件名添加GUID.所以我在我的存储容器中拥有的是:

{Some GUID}/2390/Test.exe
{Some GUID}/2389/Test.exe
{Some GUID}/2387/Test.exe
...
Run Code Online (Sandbox Code Playgroud)

我想要的容器是Test.exe的最新版本,所以我可以连接到容器,并确定我是否要下载.

我已经整理了一个NullSoft安装程序,用于检查网站和下载文件.我还编写了一个NullSoft"启动器",它将本地文件版本与网站上的版本进行比较(使用网站上的版本xml文件),如果更新则下载,然后启动应用程序.我需要弄清楚的是如何在构建之后将更新的文件放到网站上,自动化是目标之一.

我是一名实习生,一般都是部署新手,我甚至不知道我是否正确地采用这种方式.

问题:

  • 我正在做的事情对我想要完成的事情有意义吗?
  • 我们正在尝试模拟ClickOnce功能,但由于应用程序动态加载了大量DLL,因此无法使用ClickOnce.有没有办法配置ClickOnce以包含未引用的DLL?
  • 做我正在描述的事情有最好的做法吗?

我感谢任何建议,参考链接或现实世界的例子.

deployment clickonce azure continuous-deployment azure-devops

7
推荐指数
1
解决办法
889
查看次数

可观察订阅未触发

我开始研究 Reactive Extensions 以及如何将它们应用于常见场景以启用更易于管理和可读的代码。

我现在正在研究基本概念,并构建了一个简单的类:

public class ValidatableObject<TValue>
{
    public bool IsValid { get; private set; } = true;
    public TValue Value { get; }
    public ICollection<IValidationRule<TValue>> Rules { get; }

    public ValidatableObject(TValue value)
    {
        Value = value;
        Rules = new List<IValidationRule<TValue>>();
        Rules.ToObservable()
             .All(rule => rule.Check(Value))
             .Subscribe(b => IsValid = b);
    }
}

public interface IValidationRule<T>
{
    bool Check(T value);
}

public class FailingValidationRule<T> : IValidationRule<T>
{
    public bool Check(T value) => false;
}

public static void main()
{
    var …
Run Code Online (Sandbox Code Playgroud)

c# reactive-programming system.reactive

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