使用不同的引用编译Win32和x64 csproj

时间:2012-06-27 16:08:29

标签: visual-studio 64-bit csproj

我想保留我的.csproj项目并编译两个版本的dll,一个用于Win32平台,另一个用于x64平台。

我遇到了问题,因为我需要为每个平台使用不同的引用

例如,对于ExternalReference.dll

 <Reference Include="ExternalReference">
   <SpecificVersion>False</SpecificVersion>
   <HintPath>c:\win32_repository\ExternalReference.dll</HintPath>
 </Reference>

x64

 <Reference Include="ExternalReference">
   <SpecificVersion>False</SpecificVersion>
   <HintPath>c:\x64_repository\ExternalReference.dll</HintPath>
 </Reference>

我读到了$(ReferencePath)变量,但它似乎仅在.csproj.user文件中有效,并且这些文件不在我们的版本控制中,因此这不是解决方案。

你们有什么想法吗?我可以在.csproj中定义一个自定义变量,如下所示:

<PropertyGroup Condition=" '$(Platform)' == 'Win32' >
   <CustomReferencePath>c:\win32_repository</CustomReferencePath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Platform)' == 'x64' >
   <CustomReferencePath>c:\x64_repository</CustomReferencePath>
</PropertyGroup>

然后像这样添加引用:

<Reference Include="ExternalReference">
   <SpecificVersion>False</SpecificVersion>
   <HintPath>$(CustomReferencePath)\ExternalReference.dll</HintPath>
</Reference>

但它似乎不起作用,我做错了吗?

1 个答案:

答案 0 :(得分:0)

为什么不简单:

<Reference Include="ExternalReference" Condition=" '$(Platform)' == 'Win32'>
  <SpecificVersion>False</SpecificVersion>
  <HintPath>c:\win32_repository\ExternalReference.dll</HintPath>
</Reference>
<Reference Include="ExternalReference" Condition=" '$(Platform)' == 'x64'>
  <SpecificVersion>False</SpecificVersion>
  <HintPath>c:\x64_repository\ExternalReference.dll</HintPath>
</Reference>