【发布时间】:2013-02-12 14:28:49
【问题描述】:
首先我将从我想要完成的事情开始,然后我将提供上下文详细信息:
当我选择开始调试时,我希望根据通过 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% 的含义,因为它可以在指定程序文件所在位置的输出路径中。但是我不知道这是否可能或从哪里开始尝试。我想也许这会在设备注册表中定义,但我找不到它。
自定义路径变量解决方案:选择根文件夹,然后在子目录下以某种方式引用路径中的变量(可能以% 结尾?)我可以更改为我需要的路径(可能来自构建后或预部署(如果有这样的事情)脚本)。我不知道这是否可能或从哪里开始。
任何帮助将不胜感激,谢谢!
编辑:
经过一番挖掘,我最好的猜测是%CSIDL_PROGRAM_FILES% 是一个Windows CE 环境变量。我仍然不知道是否可以创建或修改这些。
【问题讨论】:
-
CSIDL(常量特殊项 ID 列表)值是用于引用随不同语言或操作系统构建而变化的位置的常量。它们不能被添加或修改。您在 Studio 中看到的内容被传递到 CoreCon API,被推送到设备,然后在设备端进行翻译。
-
@ctacke 感谢您分享您的专业知识。您确定没有办法改变设备转换这些常量的方式吗?那时涉及什么技术?我知道这是一个很长的尝试,您已经说过这是不可能的,但有时从知识较少的人那里听到问题会开启新的思考过程。
标签: visual-studio-2008 compact-framework environment-variables windows-ce windows-mobile-5.0