2009-06-13 15 views
4

Nant(0.86)で.net 3.5クラスライブラリをdllにコンパイルするにはどうすればよいですか?Nantを使ってクラスライブラリを構築する方法

これは私がこれまで持っているものです。

は、どのように私はGACに、システムのDLLを参照して行くのですか?この行はうまくいくようです。

<include name="System.ComponentModel.DataAnnotations.dll"/> 

これは私のスクリプトです:

<?xml version="1.0"?> 
<project name="MyCorp.Data" default="all"> 

    <property name="debug" value="true" /> 

    <target name="all"/> 

    <target name="clean" description="remove all build products"> 
    <delete dir="build" if="${directory::exists('build')}" /> 
    </target> 

    <target name="init"> 
    <mkdir dir="build" /> 
    </target> 

    <target name="compile" 
      depends="init" 
      description="compiles the application"> 
     <csc target="library" output="build\${project::get-name()}.dll" debug="${debug}"> 
      <sources> 
       <include name="src\MyCorp.Data\**\*.cs" />        
      </sources> 
      <references>       
      <include name="tools\subsonic\subsonic.dll"/> 
      <include name="lib\log4net\log4net.dll"/> 
      <include name="System.ComponentModel.DataAnnotations.dll"/> 
      </references>       
     </csc> 
    </target> 

</project> 

あなたがターゲットとしている。ネットのバージョンを記入してください希望の場合、私がこれまでJP Boodhoos post

答えて

4

あなたは(私の知っていること)のNAntを使用してGAC内のDLLを参照することはできません、あなたはどこか(例えば、プロジェクトのlibフォルダ内の)物理的なDLLを持っており、通常のDLLのようにそれを参照する必要があります。

<include name="lib\System\System.ComponentModel.DataAnnotations.dll"/> 

GAC DLLのコピーを取得する1つの方法は、コマンドプロンプトからC:\ Windows \ assembly \ GAC_MSILにcdしてdirで内容を一覧表示することです。これは隠されたGACディレクトリです。必要なアセンブリが見つかったら、それをcdにすると、異なる.NETバージョン(3.5.0.0など)のフォルダが見つかります。右のものにcdすれば、あなたはコピーできるDLL自体を見つけるべきです。

C:\ WINDOWS \アセンブリ\ GAC_MSIL \ System.ComponentModel.DataAnnotations

3.5.0.0__31bf3856ad364e35 \私はあなたの代わりに、CSCのMSBuildのを使用する場合は、ハード必要がありませんだと思う私のコンピュータ上で私はでそれを見つけましたGACed DLLへの参照は、あなたのためにそれらを見つけるでしょう。

+0

本当に病気の必要性3.5アプリを構築する本当に?ナントはGACにアクセスできませんか? – Dan

+0

これはおそらく良いことです、それはあなたのコードをより移植性の高いものにします - 誰がGACに何があるかを保証することはできません。同僚がSystem.ComponentModel.DataAnnotationsを持っていない可能性があります。その場合、彼/彼女は犯されています。 –

+1

引数がシステムDLLに当てはまるとは思わないでください。 – Dan

2

@Danに

を使用してこれを得ましたか。私は新しいnAntユーザーです。私が非常に早く学んだ1つの項目は、3.5SP1フレームワークをターゲットにしているDllと実行可能ファイルを作成する必要があります。これは、0.85バージョンの代わりに0.86ベータビットを使用して行う必要があります。

0.85を使用できますが、MSBuildタスクを呼び出してソリューション/プロジェクトファイルにリンクする必要があります。これは、オンラインで検索する約1日を要しました。

+0

ありがとうございました。うん、私はNantの新しいバージョン – Dan

0

私はGACのDLLを参照するNAntに問題は一度もありませんでした。あなたの行はうまくいくはずです。実際にビルドファイルに何か間違いがあると思われますが、私はちょうど推測しています。

ここでうまく動作する私のビルドファイルのいずれかからのラインです:

私は一般的に作る番目の一般的な間違いの
<references> 
    <include name="System.dll" /> 
    <include name="System.Data.dll" /> 
    <include name="System.XML.dll" /> 
</references> 

一つは、私とで、NAntのは、プロジェクトファイルで定義されているプロジェクトのインポートを使用していると仮定は、 。

コンパイル時に発生したエラーを具体的に教えてください。実行時にエラーが発生した場合、それは何ですか?

関連する問題