2011-02-08 3 views
0

Я новичок в NAnt и пытаюсь настроить файл сборки для создания нескольких проектов .Net 4.0 и запускать некоторые тесты NUnit. Один из проектов содержит модель данных и контекст EF4.0, и я столкнулся с проблемой, что, хотя ссылка System.Data.Entity.dll включена в конфигурацию NAnt, ни один из содержащихся в ней классов 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. Я что-то упускаю? Я могу отправить образец кода, если вы хотите пройти этот маршрут. –

+0

Мы пытаемся интегрироваться с Atlassian Bamboo, который, похоже, не очень хорошо поддерживает MSBuild. Сначала я попытался использовать расширение msbuild для NAnt (NAntContrib), но имел некоторые другие перерывы в том, что из-за того, что некоторые шаблоны T4 не обрабатываются должным образом. Кроме того, мы действительно пытаемся протестировать наш слой данных таким образом, и это решение содержит веб-проекты и проекты веб-сервисов, которые не нужно строить для модульного тестирования, поэтому мы действительно заинтересованы только в 4 из 11 проектов в решение. – JMorgan

ответ

2

Это не может быть решение, которое вы ищете, но я бы порекомендовал, позволяя msbuild выполнять фактическую работу по сборке. Поскольку вы не хотите создавать все решение, вы в итоге должны сделать 4 вызова (по одному для каждого проекта, который вы хотите построить) в msbuild. Вот фрагмент из моего сценария построения корня:

<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}" /> 
+0

Используется этот метод загрузки msbuild (в отличие от NAntContrib). Поэтому, похоже, это решило, спасибо. – JMorgan