根据项目配置有条件地包含文件

Posted

技术标签:

【中文标题】根据项目配置有条件地包含文件【英文标题】:Conditionally include file based on project configuration 【发布时间】:2010-03-25 22:44:39 【问题描述】:

我有多个版本的项目,我正在为其制作 Visual Studio 安装项目(安装程序)。

每个版本都有一个单独的许可协议,应显示在默认的许可协议窗口中。

我要做的是将许可协议窗口的LicenseFile指向客户端FS上某处的文件。

但许可证文件本身应根据条件编译符号(EDITION_FREE、EDITION_GOLD 等)或仅配置名称有条件地包含在安装包中。

不确定我该怎么做以及文件的Condition 属性有哪些条件?

谢谢, 德米特里。

【问题讨论】:

【参考方案1】:

您可以创建具有不同扩展名的同一文件的不同版本。假设您的许可证文件是 License.txt,因此您需要再创建几个,每个配置一个,并为它们命名:

License.free.txt

License.gold.txt 等

然后您需要创建与文件后缀(免费、黄金)同名的构建配置,并使用this-like 构建后脚本。也请看this question。

【讨论】:

它适用于非安装项目。我添加了一个预构建事件以将文件复制到特定目录并从 许可协议 窗口引用该文件。但是设置不会编译,因为最初没有文件(并且预构建事件尚未执行)。所以我将不得不保留一个假文件,因为这有点难看。 为什么不能为安装项目添加预构建事件? 因为在执行预构建事件之前必须验证文件。无论如何,我已经为将相关文件复制到其目录的另一个项目添加了一个构建后事件。然后从安装项目中引用该文件。这可以确保文件始终有效,即使在验证安装项目之前也是如此。我会接受你的回答,因为它为我提供了一些想法。

以上是关于根据项目配置有条件地包含文件的主要内容,如果未能解决你的问题,请参考以下文章

根据模板客户端有条件地在模板中排除 CSS 资源文件

当多个配置文件不活动时如何有条件地声明 Bean?

php 根据环境$ _SERVER ['HTTP_HOST']有条件地将配置文件加载到wp_config中

子项目站点的通用用户配置文件——从主服务器安全地传输用户数据

根据可用的水平空间有条件地在 ListAdapter 中显示项目

有没有办法有条件地#define 依赖项中的符号?