13

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

在命令行,如果我给

echo %3DSMaxInstallDirectory%Plugins\

我明白了

D:\Program Files\Autodesk\3ds Max 2011\Plugins\

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

copy "$(TargetDir)$(TargetName).*" "$(3DSMaxInstallDirectory)Plugins\"

但是在构建时我得到

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

谷歌上的结果是一个令人困惑的混合建议,Visual Studio 不支持 EV,Visual Studio 确实支持 EV,Visual Studio 需要 %..% 和 Visual Studio 需要 $(..) - 这些似乎都不起作用我的电脑。

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

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

4

4 回答 4

6

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

echo %CodeContractsInstallDir%
echo %DXSDK_DIR%
echo "%ONLYME%"

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

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

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

我在 V2010 SP1 上

于 2013-08-04T12:31:35.703 回答
5

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

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

于 2015-12-22T01:02:19.120 回答
2

Visual Studio 未正确编码/解码 XML 配置文件中的“特殊”字符。我可以通过手动将命令转义为 URL ( http://www.w3schools.com/tags/ref_urlencode.asp ) 使其按预期工作。

ECHO %CD%

结果在输出日志中:

Target "PreBuildEvent" in file "blahblahblah"
    Task "Exec"
        Command:
        ECHO %CD%
        C:\blah\blah\blah\Debug
    Done executing task "Exec".

但是,在项目属性对话框中使用 URL 转义似乎可以工作:

ECHO %25CD%25
于 2014-05-16T02:13:16.943 回答
0

根据这个MS Link,语法现在与使用项目文件变量相同,这意味着您不必再担心转义 % 字符了。例如,如果 BIN_PATH 是一个环境变量,并且将以下行添加到构建后步骤:

回声 $(BIN_PATH)

然后,此行将在构建后将 BIN_PATH 的值显示到输出窗口。

但是,请注意,必须在启动 VS 之前定义环境变量。当我第一次尝试这个时,我损失了大约 45 分钟,然后我才恍然大悟,也许它不起作用的原因是因为 VS 在启动时加载了环境变量。所以,我退出了 VS,重新启动,它就像一个魅力。

如果您的环境变量与 VS 项目变量相同,您仍然可能需要旧的 % 字符语法,因为“项目文件中的属性会覆盖环境变量的值”。

于 2021-05-31T05:13:42.833 回答