在32位和64位计算机上构建一个参考路径不同的项目

时间:2011-11-04 10:11:50

标签: visual-studio msbuild

我发现Visual Studio在尝试构建项目时开始有点痛苦。

基本上作为一个项目,我们中的一些人正在研究Windows 7的64位安装,有些是32位,这使得某些引用需要在不同的地方查看

目前的主要问题是MVVMLight(但我怀疑它是否具体到此)。

所以我们有这样的路径在32位工作正常但64位失败(我也有GalaSoft.MvvmLight.Extras.SL4.dll包括但因为它在同一位置没有包含在这里):< / p>

<Reference Include="GalaSoft.MvvmLight.Extras.SL4">
  <HintPath>..\..\..\..\..\Program Files (x86)\Laurent Bugnion (GalaSoft)\Mvvm Light Toolkit\Binaries\Silverlight4\GalaSoft.MvvmLight.Extras.SL4.dll</HintPath>
  <HintPath Condition="'$(PROCESSOR_ARCHITECTURE)' == 'x86'">..\..\..\..\..\Program Files\Laurent Bugnion (GalaSoft)\Mvvm Light Toolkit\Binaries\Silverlight4\GalaSoft.MvvmLight.Extras.SL4.dll</HintPath>
</Reference>

我认为这是有条件的问题,但我不确定它应该是什么,因为我不幸地创建了这个并且我对MSBuild不是很熟悉。

1 个答案:

答案 0 :(得分:3)

将您的条件更改为“'$(平台)'=='x64'”

您的项目必须放在相对于ProgramFiles的特定文件夹中。这不是个好主意。 您应该为ProgramFiles文件夹使用ProgramFiles环境变量。像这样:

    <Reference Include="GalaSoft.MvvmLight.Extras.SL4">
       <HintPath Condition="'$(Platform)' == 'x64' or !Exists('$(PROGRAMFILES) (x86)')">$(ProgramFiles)\Laurent Bugnion (GalaSoft)\Mvvm Light Toolkit\Binaries\Silverlight4\GalaSoft.MvvmLight.Extras.SL4.dll</HintPath>
       <HintPath Condition="'$(HintPath)' == '' ">$(PROGRAMFILES) (x86)\Laurent Bugnion (GalaSoft)\Mvvm Light Toolkit\Binaries\Silverlight4\GalaSoft.MvvmLight.Extras.SL4.dll</HintPath>
    </Reference>