对于我目前正在进行的项目,我需要为现有的桌面应用程序创建一个安装应用程序.安装应用程序将从网站下载,并将所需文件下载到正确的位置.启动应用程序时,它将查找这些文件的较新版本,如果存在则下载它们,然后启动应用程序.
我正在使用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文件),如果更新则下载,然后启动应用程序.我需要弄清楚的是如何在构建之后将更新的文件放到网站上,自动化是目标之一.
我是一名实习生,一般都是部署新手,我甚至不知道我是否正确地采用这种方式.
问题:
我感谢任何建议,参考链接或现实世界的例子.
deployment clickonce azure continuous-deployment azure-devops
我开始研究 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)