2011-02-08 19 views
0

我對NAnt很陌生,試圖設置一個構建文件來構建一些.Net 4.0項目並運行一些NUnit測試。其中一個項目包含一個EF4.0數據模型和上下文,並且我遇到了一個問題,即使NAnt配置中包含了System.Data.Entity.dll引用,它所包含的任何System.Data類都不會正在被構建(System.Data.EntityClient,System.Data.Objects等)找到。我正在使用NAnt 0.91 Alpha 2.任何人遇到此問題或有任何想法如何解決它?在下面構建文件。NAnt和System.Data.Entity.dll

謝謝。

<?xml version="1.0" encoding="utf-8" ?> 
<project name="ClinicalModel"> 
    <property name="src.dir" value="" /> 
    <property name="output.dir" value="bin/debug" /> 
    <property name="entitysrc" value="..\Entities" /> 
    <property name="debug" value="true" overwrite="false" /> 
    <property name="nant.settings.currentframework" value="net-4.0" /> 
    <property name="framework-get-assembly-directory" value="${framework::get-assembly-directory('net-4.0')}" /> 
    <property name="dotNetReferenceAssemblyPath" value="${framework-get-assembly-directory}\" /> 
    <target name="clean" description="clean up already built files"> 
     <delete file="${output.dir}/Entities.dll" failonerror="false" /> 
     <delete file="${output.dir}/Model.dll" failonerror="false" /> 
    </target> 
    <target name="build_entities" description="build entities"> 
     <csc target="library" output="${output.dir}\Entities.dll" debug="${debug}"> 
      <sources basedir="${entitysrc}"> 
       <include name="**/*.cs" /> 
      </sources> 
     </csc> 
    </target> 
    <target name="build" depends="build_entities" description="build model"> 
     <csc target="library" output="${output.dir}\Model.dll" debug="${debug}"> 
      <sources> 
       <include name="**\*.cs" /> 
      </sources> 
      <references basedir="${output.dir}"> 
       <include name="**\*.dll" /> 
      </references> 
     </csc> 
    </target> 

</project> 
+0

這並不能真正回答您的問題,但我很想知道您爲什麼使用NAnt實際執行該建築。我一直使用NAnt來做很多事情(Build,FxCop,NUnit,移動內置文件等),但是對於實際構建,我在解決方案文件上運行適當版本的msbuild。擁有漂亮的sln和csproj文件似乎太痛苦了,但是忽略它們,基本上必須在NAnt腳本中重現它們。我錯過了什麼嗎?如果你想走這條路線,我可以發佈示例代碼。 – 2011-02-08 18:12:05

+0

我們正在嘗試與Atlassian Bamboo整合,這似乎不太支持MSBuild。我最初嘗試使用NAnt的msbuild擴展(NAntContrib),但由於一些T4模板沒有正確處理而導致其他一些中斷。另外,我們實際上只是試圖以這種方式來測試我們的數據層,並且解決方案包含了不需要爲單元測試而構建的Web項目和Web服務項目,所以我們只對解。 – JMorgan 2011-02-08 18:24:31

回答

2

這可能不是你正在尋找的解決方案,但我會建議讓msbuild做實際的構建工作。由於您不想構建整個解決方案,因此最終需要對msbuild進行4次調用(每個項目需要構建一個調用)。以下是我的根構建腳本中的代碼片段:

<property name="common.msbuild2010" value="C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MsBuild.exe" /> 
    <property name="common.buildType" value="Debug" /> 

    ... 

<setenv> 
    <variable name="DevEnvDir" value="C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\"/> 
</setenv> 

    <exec program="${common.msbuild2010}" commandline="&quot;${local.someCsProjName}&quot; /t:Rebuild /p:Configuration=${common.buildType}" />