2

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

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

知道问题的原因可能是什么吗?

4

1 回答 1

5

Visual Studio 2010 是一个 32 位进程,WOW会给c:\Program Files (X86)32 位进程。

我在这里的假设:

如果我尝试变得聪明,而是使用 Microsoft.Build.Evaluation.ProjectCollection.LoadProject([project file]),试图在代码中构建它

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

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

于 2012-07-20T13:40:34.440 回答