我有一个C#项目文件(.csproj),其中包含对$(ProgramFiles)的引用。我正在使用64位Windows7。当我在Visual Studio 2010中编译此项目文件时,它将在c:\Program Files(X86)中正确找到该文件。

如果我尝试变得聪明,而改用Microsoft.Build.Evaluation.ProjectCollection.LoadProject([project file]),则尝试在代码中构建它时,它错误地将$(ProgramFiles)评估为c:\Program Files。

知道造成问题的原因是什么吗?

最佳答案

Visual Studio 2010是32位进程,而WOW将为32位进程提供c:\Program Files (X86)

我在这里的假设:



就是说,当您在“代码中”执行此操作时,您的代码正在执行x64,因此您将获得正常的环境值。

如果需要x86程序文件目录的路径,则可以使用x64中的ProgramFiles(x86)环境变量。在MSBuild中,这是$(MSBuildProgramFiles32)

关于c# - 为什么Microsoft.Build.Evaluation在64位PC上将$(ProgramFiles)评估为 “c:\program files”?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11580485/

10-11 02:24