Nant 0.92与2012年相比,不会在64位操作系统上构建32位解决方案

时间:2013-07-10 13:43:09

标签: c# msbuild nant nantcontrib

您好我在安装了vs 2012的Server 2008 r2 x64上构建x86解决方案时遇到问题。它总是错误地出现以下错误:

  [msbuild] "C:\fake.sln" (Build target) (1) ->
  [msbuild] "C:\fake.csproj.metaproj" (default target) (2) ->
  [msbuild] "C:\fake.csproj" (default target) (8) ->
  [msbuild] "C:\xeqodvbc.tmp_proj" (_CompileTemporaryAssembly target) (11) ->
  [msbuild] (CoreCompile target) -> 
  [msbuild]   error CS1607 : Warning as error : Assembly generation -- Referenced assembly 'PresentationCore.dll' targets a different processor [C:\xeqodvbc.tmp_proj]
  [msbuild]   error CS1607 : Warning as error : Assembly generation -- Referenced assembly 'System.Data.dll' targets a different processor [C:\xeqodvbc.tmp_proj]

以下是失败的nant任务。 (我更改了项目名称)所有Set3.5目标都将msbuild.targetframework属性设置为v3.5。

<target name="faketarget" depends="makeTempDir" description="builds">
    <call target="set3.5" />
    <msbuild project="our32bit.sln" target="Build" verbosity="${msbuild.verbosity}">
        <property name="Configuration" value="${build.configuration}" />
        <property name="Platform" value="x86" />
        <property name="PlatformTarget" value="x86" />
        <!--<property name="Platform" value="${build.platform}" />-->
        <property name="RunCodeAnalysis" value="${code.analysis}" />
        <property name="CodeAnalysisRules" value="${code.analysis.rules}" />
        <property name="TargetFrameworkVersion" value="${msbuild.targetframework}" />
    </msbuild>

现在如果我进入解决方案的文件夹并调用msbuild /p:TargetFrameworkVersion=v3.5它没有问题,如果我在VS 2012中打开它,我也可以从那里构建它。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题,我不确定这是一个内部的nant贡献问题,还是我没有正确地做到这一点。

要解决这个问题,我必须创建一个exec任务,指向安装在C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319的msbuild。

当我运行msbuild任务时,它使用此路径C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319

所以内部我认为nant默认为64位机器上的64位路径。