在32位和64位机器上建立参考路径不同的项目
问题描述:
我发现Visual Studio在尝试构建项目时开始有点痛苦。在32位和64位机器上建立参考路径不同的项目
基本上作为一个项目我们中的一些在Windows 7的64位安装工作,有些是在32位,这使得某些提法需要在不同的地方
看目前的主要问题是MVVMLight(但我怀疑这是特定的)。
因此,我们有这样的路径在32位工作正常,但在64位失败(我也有GalaSoft.MvvmLight.Extras.SL4.dll包括但因为它在同一位置没有包括在这里):
<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。
答
更改您的病情为“‘$(平台)’==‘64’”
你的项目必须放置在特定的相对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>
我发现提及可以使用的另一个属性。与您在此说的类似,但不确定是否正确:'(MSBuildProgramFiles32)\ Laurent Bugnion(GalaSoft)\ Mvvm Light Toolkit \ Binaries \ Silverlight4 \ GalaSoft.MvvmLight.Extras.SL4.dll' – Firedragon
It取决于您正在使用的MSBuild版本。您没有提供此信息。如果您使用的是MsBuild 4.0,则可以使用MSBuildProgramFiles32。但是这个属性总是指向32位ProgramFiles文件夹,即使在64位操作系统上也是如此。要获得常规程序文件文件夹,您可以使用$(ProgramFiles)。所以在你的情况下,你可以使用$(MSBuildProgramFiles32)而不是“$(PROGRAMFILES)(x86)”。 – Ludwo
感谢您的信息。不熟悉msbuild,所以这一切都有所帮助 – Firedragon