我有一个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/