Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 更改「;调试/工作目录";VS2008中的全局(不是每个用户) 我在VS2008中有一个C++解决方案,有多个项目。此解决方案包含运行时所需的文件,这些文件根据相对于解决方案目录的路径加载(例如“Testing/data/”+“dataN.bin”)_Visual Studio 2008_Visual C++_Projects And Solutions - Fatal编程技术网

Visual studio 2008 更改「;调试/工作目录";VS2008中的全局(不是每个用户) 我在VS2008中有一个C++解决方案,有多个项目。此解决方案包含运行时所需的文件,这些文件根据相对于解决方案目录的路径加载(例如“Testing/data/”+“dataN.bin”)

Visual studio 2008 更改「;调试/工作目录";VS2008中的全局(不是每个用户) 我在VS2008中有一个C++解决方案,有多个项目。此解决方案包含运行时所需的文件,这些文件根据相对于解决方案目录的路径加载(例如“Testing/data/”+“dataN.bin”),visual-studio-2008,visual-c++,projects-and-solutions,Visual Studio 2008,Visual C++,Projects And Solutions,为了使此解决方案能够工作,我必须在项目中设置工作目录设置,使其指向解决方案目录(例如配置属性>>调试>>工作目录=$(SolutionDir))。当我在自己的PC上调试时,这可以正常工作。但是,当其他用户加载我的解决方案时,他的项目没有正确设置此属性 我跟踪到,此设置不是存储在项目文件(project.vcproj)中,而是存储在为其创建的用户特定文件(project.vcproj.DOMAIN.user.user)中 我希望为所有用户存储此设置,而不必一次又一次地手动设置。 我的想法是: 找

为了使此解决方案能够工作,我必须在项目中设置工作目录设置,使其指向解决方案目录(例如
配置属性>>调试>>工作目录=$(SolutionDir)
)。当我在自己的PC上调试时,这可以正常工作。但是,当其他用户加载我的解决方案时,他的项目没有正确设置此属性

我跟踪到,此设置不是存储在项目文件(
project.vcproj
)中,而是存储在为其创建的用户特定文件(
project.vcproj.DOMAIN.user.user
)中

我希望为所有用户存储此设置,而不必一次又一次地手动设置。

我的想法是:

  • 找到一种方法将其存储在.vcproj文件(不是用户特定的文件)或解决方案文件中
  • 找到一种方法来创建一个“默认用户特定文件”,所有用户特定的设置都将从该文件开始(以后可以随意修改)
然而,我没有找到一种方法来做这两件事

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

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

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

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

< P>您可以考虑使用“配置属性/通用/输出目录”,或者“配置属性/链接器/输出文件”,而不是使用“调试器/工作目录”设置。这些设置是针对每个项目而不是针对每个用户的,如果您保持工作目录不变,则这是应用程序工作目录的默认值。

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

如果假设工作目录与EXE目录相同,那么工作会更好。这将是调试时和目标计算机上的默认设置。您可以使用链接器设置完全控制EXE文件的位置。通过在代码中获取EXE目录,您可以生成一个绝对路径,从而保护自己不受使用另一个工作目录运行程序的快捷方式的影响。使用GetModuleFileName(),传递NULL以获取EXE文件的路径

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

if not exist "$(OutDir)\Testing" md "$(OutDir)\Testing"
xcopy /d /s "$(SolutionDir)\Testing\*.*" "$(OutDir)\Testing
请注意/d选项如何确保仅在测试文件夹内容更改时才进行复制

  • 像往常一样配置调试设置(设置工作目录、设置参数等),但只使用相对路径、变量。不要使用像D:\MyProject\libs这样的绝对路径
  • 保存解决方案,然后关闭Visual Studio
  • 转到您的项目目录并找到project.vcproj.COMPUTERNAME.USER.USER
  • 将其重命名为PROJECT.vcproj.user(此文件将是通用调试配置,您可以将其提交给源代码管理)
  • 打开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>
    
    
    
    复制资源:这样就可以了,但是我有大量的资源要复制(在本例中是大型测试向量),每次复制这些资源都会浪费时间和内存。此外,我有多个构建配置(发布、调试等),这将导致我希望避免的进一步重复。这些向量位于根“solution”目录是有意义的,因为这些数据被多个项目(以不同的方式)使用。另外,我希望维护解决方案文件列表中的顺序(关于目录结构)。另一方面,将可执行结果复制到根解决方案目录不仅会导致根目录混乱,而且不会正确支持多个构建配置(将继续覆盖同名文件等)。似乎出于调试目的,最合乎逻辑的事情是更改工作目录。关于您提出的部署问题(我同意这一点),我宁愿在调试时把事情复杂化(因为我部署的频率比调试的频率低),这就是为什么我指出了xcopy/d选项的行为。你只为这本书付了一次钱。是的,但它仍然需要我把东西到处复制。我们这里说的是千兆字节的数据…:)将数据放入与per相同级别的目录中