VS2010:如何在Post-Build中使用环境变量

seb*_*ebf 9 environment-variables visual-studio-2010

在我的PC上,我创建了一个名为的系统环境变量 3DSMaxInstallDirectory

在命令行,如果我给

echo %3DSMaxInstallDirectory%Plugins\
Run Code Online (Sandbox Code Playgroud)

我明白了

D:\Program Files\Autodesk\3ds Max 2011\Plugins\
Run Code Online (Sandbox Code Playgroud)

在Visual Studio中,我进入Post-Build部分

copy "$(TargetDir)$(TargetName).*" "$(3DSMaxInstallDirectory)Plugins\"
Run Code Online (Sandbox Code Playgroud)

然而,在构建我得到

Error   4   The command "copy "C:\Users\Sebastian\Documents\Visual Studio 2010\Projects\MaxBridge\MaxBridgeImporterPlugin\bin\Debug\MaxBridgePlugin.*" "Plugins\"
" exited with code 1.   MaxBridgeImporterPlugin
Run Code Online (Sandbox Code Playgroud)

谷歌的结果是令人困惑的混合建议,Visual Studio不支持EV,Visual Studio支持EV,Visual Studio需要%..%和Visual Studio需要$(..) - 而且似乎都没有我的电脑.

在Visual Studio中使用环境变量的正确方法是什么?

(是的,目录存在,我不想明确设置路径的原因是我准备分享这个项目,下载后和建立之前别人必须采取的每一步都是另一个障碍.)

ren*_*ene 6

这在项目的“构建事件”的构建后设置中对我有用。

echo %CodeContractsInstallDir%
echo %DXSDK_DIR%
echo "%ONLYME%"
Run Code Online (Sandbox Code Playgroud)

ONLYME 是我个人资料的用户变量中的环境变量。

其他的是系统范围的变量。

如果我以管理员身份启动 VS2010,ONLYME 保持为空,系统变量仍然具有预期的值。

我在 V2010 SP1


kla*_*ndl 5

'%'字符由 MSBuild 保留,因此您必须将其替换%25MSDN 中记录的十六进制转义序列。

copy "$(TargetDir)$(TargetName).*" "%253DSMaxInstallDirectory%25\Plugins"应该实际工作。但是:Visual Studio 的命令行编辑器正确显示它,但 MSBuild 然后%253错误地解释。我不知道这是错误还是功能,但您不能以数字开头环境变量的名称。