3

.build セットアップが完了しました

<csc platform='x86' target='winexe' output='${validate.file}' debug='${debug}' warnaserror='true'>

しかし、私は得る

  [csc] error CS1607: Warning as Error: Assembly generation -- Referenced assembly 'System.Data.dll' targets a different processor
  [csc] error CS1607: Warning as Error: Assembly generation -- Referenced assembly 'System.Data.OracleClient.dll' targets a different processor
  [csc] error CS1607: Warning as Error: Assembly generation -- Referenced assembly 'System.EnterpriseServices.dll' targets a different processor
  [csc] error CS1607: Warning as Error: Assembly generation -- Referenced assembly 'System.Transactions.dll' targets a different processor
  [csc] error CS1607: Warning as Error: Assembly generation -- Referenced assembly 'System.Web.dll' targets a different processor
  [csc] error CS1607: Warning as Error: Assembly generation -- Referenced assembly 'mscorlib.dll' targets a different processor

External Program Failed: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe (return code was 1)

NAnt .92を使用する場合。NAnt .91 を使用すると、すべてが機能します。.build を .92 で動作するように更新するにはどうすればよいですか? 私はWin7 64Bitで構築しています。

まったく同じ.buildファイルを持つNAnt .91の下で、使用される外部プログラムはC:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe. Framework64 ではなく、フレームワークに注意してください。が選択されている場合、NAnt .92 は間違ったフレームワークを使用しているようですplateform='x86'

4

1 に答える 1

0

簡単な回避策の 1 つは、csc タスクを次のように変更することです。

<csc platform='x86' target='winexe' output='${validate.file}' debug='${debug}' warnaserror='true'>
    <warnaserror>
        <exclude number="1607" />
    </warnaserror>

この方法では、エラーとして警告が表示されますが (これは私が推測したいことです)、特に CS1607 では表示されません。多分それはあなたが一緒に暮らすことができる妥協ですか?

実に興味深い問題です。NAnt.exe.config に飛び込むと、フレームワーク 'net-4.0' の定義が常に次のアセンブリを検索していることがわかります。

frameworkdirectory="${path::combine(installRoot, 'v4.0.30319')}"
frameworkassemblydirectory="${path::combine(installRoot, 'v4.0.30319')}"

installRoot は、値が常に Framework64 であるレジストリから取得されます。これが意味することは、'net-4.0' をターゲットにした時点で、すでに Framework64 フォルダーが選択されているということです。csc タスクで x86 を使用するように指定した時点では、手遅れです。

NAnt.exe.config 内に新しいフレームワーク定義を作成し、net-4.0 を複製して、たとえば net-4.0-x86 に複製するという、大胆で優れた実験があります。次に、その定義を変更して、Framework64 ではなく Framework パスをターゲットにします。それはうまくいくかもしれません。もちろん、nant に net-4.0-x86 をターゲットにするように指示する必要があり、ハッキングされたカスタマイズされた NAnt.exe.config ファイルが作成されます。

于 2012-08-27T11:35:31.067 に答える