NAnt и System.Data.Entity.dll - PullRequest
       0

NAnt и System.Data.Entity.dll

0 голосов
/ 08 февраля 2011

Я новичок в 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. Кто-нибудь еще сталкивался с этим или есть идеи, как обойти это?Файл сборки ниже.

Спасибо.

<?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> 

1 Ответ

2 голосов
/ 08 февраля 2011

Возможно, это не то решение, которое вы ищете, но я бы порекомендовал, чтобы 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}" />
...