首先,我将从我想要完成的工作开始,然后我将提供上下文细节:
当我选择开始调试时,我希望根据通过 Windows Mobile 设备中心连接的设备来更改输出目录。澄清:从我们的安装程序安装工作正常,但从 Visual Studio 调试给我带来了问题。
我正在使用 Visual Studio 2008。该项目是用 C# 为 Compact Framework 3.5 编写的智能设备项目,目标是 Windows Mobile 5.0 Pocket PC Device R2(根据项目设置)。我发现当我以这种设备类型为目标时,它可以在我们支持的所有 Windows Mobile 版本以及 Windows CE 6 上正常工作。任何建议的解决方案都必须在 Windows Mobile 和 Windows CE 上工作。
当我进入项目属性并转到设备选项卡时,它显示输出文件夹:和输出路径。如果我单击 ... 按钮,我可以将其更改为不同的默认值,甚至将其设置为根文件夹,然后完全指定我想要的确切路径作为子目录。在大多数设备上,如果我将其保留在(设备默认值)或从下拉列表中选择程序文件文件夹,它工作正常。问题是当它在我们支持的 Windows CE 设备上运行时,它需要从不同的位置运行。
可能的解决方案:
多项目解决方案:针对不同的设备拥有多个项目。这样做的问题是我不知道如何在不违反 DRY 原则的情况下执行某些需要包含在输出中的文件,并且我不想在不同的 Start 项目之间来回切换。
重新定义%CSIDL_PROGRAM_FILES%
解决方案:更改%CSIDL_PROGRAM_FILES%
含义,因为这可以在指定 Program Files 所在位置的输出路径中。但是我不知道这是否可能或从哪里开始尝试。我想也许这会在设备注册表中定义,但我找不到它。
自定义路径变量解决方案:选择根文件夹,然后在子目录下以某种方式引用一个变量(可能以一个开头和结尾%
?)我可以更改为我需要的路径(可能来自构建后或预部署(如果有这样的事情)脚本)。我不知道这是否可能或从哪里开始。
任何帮助将不胜感激,谢谢!
编辑:
经过一番挖掘,我最好的猜测是这%CSIDL_PROGRAM_FILES%
是一个 Windows CE 环境变量。我仍然不知道是否可以创建或修改这些。