如何使用设置部署UWP应用程序

3

通常我会将预定义的配置文件放在app.config中,并将其与应用程序一起发布。因此,我可以为客户A提供不同于客户B的预定义设置。

在UWP中,我该如何实现这一点?


你是通过侧面加载来部署应用程序的吗? - Herdo
是的,那是目前的计划。 - Briefkasten
2个回答

1

1
作为UWP应用程序旨在通过商店部署,因此不再需要app.config文件。如果您仍希望产生类似的行为,那么您将需要使用编译器指令进行工作。
最简单的方法是创建一个类似于众所周知的app.config文件的文件:
<Config>
    <!-- key-value pairs go here -->
</Config>

为每个客户创建一个配置文件...
  • Assets
    • CustomerA.config
    • CustomerB.config
    • CustomerC.config

...并通过编译器指令加载它:

public Config GetConfig()
{
    var configFileName = GetConfigName();
    // Load config...
}

private string GetConfigName()
{
#if CUSTA
    return "CustomerA.config";
#endif
#if CUSTB
    return "CustomerB.config";
#endif
#if CUSTC
    return "CustomerC.config";
#endif
    throw new NotSupportedException(
        "Assembly was compiled for a customer which config doesn't exist.");
}

如果不同配置文件的数量可能会增加到未知数量,最好实现一个Web服务来识别客户并提供配置。
编辑:在您的应用程序中使用单个配置文件也是可能的(这将防止编译器指令),因此可以通过XSLT在不同的构建配置中修改XML。 原则保持不变,但您将烦人的部分移到了XSLT中。

将CustomerA.config,CustomerB.config等文件放入Assets文件夹中时,它们会被部署到每个客户端吗?由于每个客户端都有自己的Web服务URI,并且我想将它们存储在.config文件中,所以如果CustomerA可以看到CustomerB的WebService配置,那就不好了。 - Briefkasten
@Briefkasten 那你最好使用我在编辑中写的内容。使用一个单独的 XML 文件,每个客户都会通过 XSLT 进行修改。由于这样,每个客户都将收到自己的 XML,并且无法看到其他客户的 XML。 - Herdo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接