【问题标题】:NAnt and System.Data.Entity.dllNAnt 和 System.Data.Entity.dll
【发布时间】:2011-02-09 03:47:48
【问题描述】:

我是 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> 

【问题讨论】:

  • 这并不能真正回答您的问题,但我很想知道您为什么实际使用 NAnt 进行构建。我一直使用 NAnt 来做很多事情(构建、FxCop、NUnit、移动构建的文件等),但对于实际构建,我在解决方案文件上运行适当版本的 msbuild。拥有漂亮的 sln 和 csproj 文件似乎太痛苦了,但随后忽略它们并且基本上必须在 NAnt 脚本中重现它们。我错过了什么吗?如果你想走这条路,我可以发布示例代码。
  • 我们正在尝试与 Atlassian Bamboo 集成,它似乎不太支持 MSBuild。我最初尝试为 NAnt (NAntContrib) 使用 msbuild 扩展,但由于一些 T4 模板没有得到正确处理,因此在这方面出现了一些其他问题。此外,我们实际上只是尝试以这种方式测试我们的数据层,并且该解决方案包含不需要为单元测试构建的 Web 项目和 Web 服务项目,因此我们只对 11 个项目中的 4 个真正感兴趣解决方案。

标签: nant


【解决方案1】:

这可能不是您正在寻找的解决方案,但我建议让 msbuild 完成实际的构建工作。由于您不想构建整个解决方案,因此您最终会对 msbuild 进行 4 次调用(每个要构建的项目一个)。这是我的根构建脚本中的一个 sn-p:

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

【讨论】:

  • 使用这种加载 msbuild 的方法(而不是 NAntContrib)有效。所以这似乎已经解决了,谢谢。
猜你喜欢
  • 2011-12-15
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 2011-10-15
  • 2011-08-29
  • 1970-01-01
相关资源
最近更新 更多