代码之家  ›  专栏  ›  技术社区  ›  scooz

在VS2008中全局更改“调试/工作目录”(不是每个用户)

  •  11
  • scooz  · 技术社区  · 15 年前

    我有一个C++解决方案,在VS2008中有多个项目。此解决方案包含运行时需要的文件,这些文件是根据路径加载的 相对于解决方案目录 (例如。 "Testing/data/" + "dataN.bin" ).

    工作目录设置 在项目中,使其指向解决方案目录(例如。 Configuration Properties >> Debugging >> Working Directory = $(SolutionDir)

    我已跟踪此设置,使其不存储在项目文件中( PROJECT.vcproj PROJECT.vcproj.DOMAIN.USER.user ).

    • 想办法 将其存储在.vcproj文件中
    • 想办法创造一个 默认用户特定文件 ,所有用户特定的设置将从中开始(以后可以随意修改)。

    然而,我没有找到一个方法来做这些。

    还有一些注意事项/限制:

    • 我需要处理许多大文件作为这些资源,因此我希望避免执行到不同目录的副本。
    • 这些解决方案需要支持多种构建配置(调试、发布等)。
    • 如果可能的话,我希望避免构建前/构建后脚本,以保持事情的简单性(低优先级)。

    任何帮助都将不胜感激。。。提前谢谢。

    4 回复  |  直到 15 年前
        1
  •  4
  •   Hans Passant    15 年前

    不存在此类属性。还有更大的问题,这也需要在部署解决方案之后才能解决。工作目录将不会是“解决方案”目录,目标计算机上没有。

    另一个标准解决方案是将EXE需要的任何类型的资源复制到与生成输出文件夹相对的文件夹中。使用预生成事件执行此操作时,请使命令行看起来类似于:

    if not exist "$(OutDir)\Testing" md "$(OutDir)\Testing"
    xcopy /d /s "$(SolutionDir)\Testing\*.*" "$(OutDir)\Testing
    

    请注意/d选项如何确保仅在测试文件夹内容更改时才进行复制。

        2
  •  10
  •   vahapt amischiefr    13 年前
    1. 配置
    2. 保存解决方案,然后 关闭Visual Studio .
    3. 项目.vcproj.COMPUTERNAME.USER.USER
    4. 重命名 (此文件将是通用调试配置,您可以将其提交到源代码管理)
    5. 打开Visual Studio ,如果需要,对调试设置进行额外的添加(额外信息将存储在特定于您的PROJECT.vcproj.COMPUTERNAME.USER.USER文件中。请注意 PROJECT.vcproj.COMPUTERNAME.USER.USER将覆盖 继承的配置)

    下面提供了PROJECT.vcproj.user文件示例

    <?xml version="1.0" encoding="Windows-1252"?>
    <VisualStudioUserFile
        ProjectType="Visual C++"
        Version="9,00"
        ShowAllFiles="false"
        >
        <Configurations>
            <Configuration
                Name="Release|Win32"
                >
                <DebugSettings
                    Command="$(ProjectDir)..\Deploy\$(ConfigurationName)\$(TargetFileName)"
                    WorkingDirectory="$(ProjectDir)..\Deploy\$(ConfigurationName)\"
                    CommandArguments=""
                    Attach="false"
                    DebuggerType="3"
                    Remote="1"
                    RemoteMachine="LOCALHOST"
                    RemoteCommand=""
                    HttpUrl=""
                    PDBPath=""
                    SQLDebugging=""
                    Environment=""
                    EnvironmentMerge="true"
                    DebuggerFlavor="0"
                    MPIRunCommand=""
                    MPIRunArguments=""
                    MPIRunWorkingDirectory=""
                    ApplicationCommand=""
                    ApplicationArguments=""
                    ShimCommand=""
                    MPIAcceptMode=""
                    MPIAcceptFilter=""
                />
            </Configuration>
            <Configuration
                Name="Debug|Win32"
                >
                <DebugSettings
                    Command="$(ProjectDir)..\Deploy\$(ConfigurationName)\$(TargetFileName)"
                    WorkingDirectory="$(ProjectDir)..\Deploy\$(ConfigurationName)\"
                    CommandArguments=""
                    Attach="false"
                    DebuggerType="3"
                    Remote="1"
                    RemoteMachine="LOCALHOST"
                    RemoteCommand=""
                    HttpUrl=""
                    PDBPath=""
                    SQLDebugging=""
                    Environment=""
                    EnvironmentMerge="true"
                    DebuggerFlavor="0"
                    MPIRunCommand=""
                    MPIRunArguments=""
                    MPIRunWorkingDirectory=""
                    ApplicationCommand=""
                    ApplicationArguments=""
                    ShimCommand=""
                    MPIAcceptMode=""
                    MPIAcceptFilter=""
                />
            </Configuration>
        </Configurations>
    </VisualStudioUserFile>
    
        3
  •  1
  •   Ofek Shilon    15 年前

    您可以考虑使用'Configuration Properties/General/Output Directory'或'Configuration Properties/Linker/Output file',而不是'Debugger/working Directory'设置。这些设置是针对每个项目的,而不是针对每个用户的,如果您保持工作目录不变 是应用程序工作目录的默认值。

        4
  •  0
  •   Mervin    15 年前

    我想知道这是否可能,因为用户可能没有足够的权限访问和读/写目录,我想VS检查用户是否有权访问一个目录,当你选择它,这可能就是为什么只有一个基于帐户的选项。