在visual studio中启动调试器时通过属性表更改PATH

Ser*_*gey 5 msbuild path visual-studio-2010 propertysheet visual-c++

我有一组属性表,它们定义了我的c ++项目中常用的第3部分库的包含和链接路径.有没有办法在可执行文件中定义PATH,以便在我在调试器中启动它时找到二进制文件?

编辑:我注意到如果我将以下内容添加到属性表(通过记事本)

<PropertyGroup>
   <VCRedistPaths>c:\path\bin\$(Platform);$(VCRedistPaths)</VCRedistPaths>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

然后我在调试器下运行app时得到c:\ path\bin\Win32(例如)路径,但问题是visual studio没有立即检测到我的更改(如果我更改属性表中的路径或附加另一个属性表与另一个路径),我必须重新启动visual studio以获取拾取的更改.谁知道这是否可以避免?

Amr*_*mro 7

这是一个在VS2010中为我工作的示例属性表:

mysheet.props

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup Label="UserMacros" />
  <PropertyGroup>
    <LocalDebuggerEnvironment>PATH=%MYLIB_ROOT%\bin;%PATH%$(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>
  </PropertyGroup>
  <ItemDefinitionGroup>
    <ClCompile>
      <AdditionalIncludeDirectories>$(MYLIB_ROOT)\include</AdditionalIncludeDirectories>
    </ClCompile>
    <Link>
      <AdditionalLibraryDirectories>$(MYLIB_ROOT)\lib</AdditionalLibraryDirectories>
      <AdditionalDependencies>mylib.lib</AdditionalDependencies>
    </Link>
  </ItemDefinitionGroup>
  <ItemGroup />
</Project>
Run Code Online (Sandbox Code Playgroud)

我想到了LocalDebuggerEnvironment在项目属性中手动设置PATH环境变量的用法:

proj_prop_env_var

此更改反映在*.vcxproj.user项目选项文件中,然后我将其复制到我自己的属性表中.

HTH


Han*_*ant -1

不确定您在谈论哪种属性页。它不能通过项目属性表进行设置,它是一个调试设置。项目+属性、调试、环境设置。比如说,将其设置为

 path = c:\foo;c:\bar
Run Code Online (Sandbox Code Playgroud)

它们将被合并到系统环境的 PATH 变量的值中。

请注意,一般而言,依赖 PATH 并不是一个好的做法。您将需要创建一个安装程序以确保用户的计算机具有正确的 PATH 值。需要重启才能确保生效。而且它很容易被在你的安装程序之后运行的蹩脚安装程序破坏。

更好的方法是使用构建后事件,该事件使用 xcopy /d 将所需的 DLL 复制到 $(TargetDir) 中。