构建.NET 4个项目南特(Building .NET 4 projects with Nant)

2019-06-27 11:17发布

我如何获得恶性构建面向.NET 4.0框架的项目?

Answer 1:

2010年4月15日...更新上面从尤金正确的答案,.NET 4和VS2010之后被释放。

我下载VS2010和.NET 4运行。 量产版车型似乎是v4.30319即(C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319)

审查后http://paigecsharp.blogspot.com/2009/08/nant-net-framework-40-configuration.html ,......我在文本粘贴并改变所有文本从v4.0.20506到v4.30319的添加文字NAnt.exe.config。

然后,我更新了我的恶性脚本

<property name="nant.settings.currentframework" value="net-4.0" />, 

这使我的项目楠脚本使用.NET 4编译

这让我一个恶性构建在.NET 4中的二进制....

更新2010-06-14:以上与楠-0.85回答,我升级到南特-0.90,不得不增加vendor="Microsoft"到被添加到nants配置框架属性。 此外,它看起来像nant0.9发现.NET库的方式不同,因为我不得不这样的事情添加到我的恶性的build.xml ...

<property name="framework-get-assembly-directory" value="${framework::get-assembly-directory('net-4.0')}" />
<property name="dotNetReferenceAssemblyPath" value="${framework-get-assembly-directory}\" />

<include name="${dotNetReferenceAssemblyPath}System.ComponentModel.DataAnnotations.dll" />


Answer 2:

如果你想使用楠建设目标.NET 4.0的项目,你就必须修改NAnt.exe.config并添加净4.0目标框架和添加<supportedRuntime ... />行到<startup >部分。



Answer 3:

http://paigecsharp.blogspot.com/2009/08/nant-net-framework-40-configuration.html是config文件的恶性一个完整的代码。



Answer 4:

这是非常类似的这些问题/问题:

<的msbuild>任务或msbuild.exe与恶性?

另一种选择是直接调用的MSBuild从块。

<property name="MSBuildPath" value="C:\WINDOWS\Microsoft.NET\Framework\v4.0\MSBuild.exe" />    

<target name="build">
    <exec program="${MSBuildPath}">
            <arg line='"${SolutionFile}"' />
            <arg line="/property:Configuration=${SolutionConfiguration}" />
            <arg value="/target:Rebuild" />
            <arg value="/verbosity:normal" />
            <arg value="/nologo" />
            <arg line='/logger:"C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll"'/>
    </exec>
</target>


Answer 5:

我使用的所有上述问题的答案,仍然遇到了一些奇怪的构建错误:“错误MSB6006:‘Al.exe工具’与代码128退出”。 错误没有帮助的。 我做了一些谷歌搜索,并与几个答案上来。 这里是链接: MSDN帮助和asp.net论坛

我斟酌与错误一整天,学习了“详细”和“诊断”的日志,但它所作的是指向我失败建设大会。 没有具体的错误。 我甚至不能重复它在我的本地框。 最后,我决定尝试对资源文件在第二环节的命名规则(建议asp.net论坛 )和...哈利路亚! 我的构建开始工作。 我不知道这是怎么回事与构建失败,因为资源的名称,对仍在工作,但我的近期目标是让构建工作。

希望这可以帮助别人那里。



Answer 6:

楠0.86后来运行的开箱。 写这篇文章,我使用0.91。

当从网上下载,记得要“ 解除拆包之前”的压缩文件(重置安全区)。



Answer 7:

只要把信息存在,所以我可以找到它再次,建立C ++项目,而无需修改PATH变量environement和创建LIB / LIBPATH /包含变量或vsvars32运行楠,类似的东西需要在南特的配置文件:

<project>
    <readregistry
        property="WindowsSdkDir"
        key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\InstallationFolder"
        hive="LocalMachine"
        failonerror="true" />

    <readregistry
        property="installRoot"
        key="SOFTWARE\Microsoft\.NETFramework\InstallRoot"
        hive="LocalMachine" />
    <readregistry
        property="sdkInstallRoot"
        key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-NetFx40Tools\InstallationFolder"
        hive="LocalMachine"
        failonerror="false" />
    <readregistry
        property="vs10Win32Tools"
        key="SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A\WinSDK-Win32Tools\InstallationFolder"
        hive="LocalMachine"
        failonerror="false" />      
    <readregistry
        property="vcInstallDir"
        key="SOFTWARE\Microsoft\VisualStudio\10.0\Setup\VC\ProductDir"
        hive="LocalMachine"
        failonerror="true" />
    <readregistry
        property="vs10dbghelp"
        key="SOFTWARE\Microsoft\VisualStudio\10.0\Setup\Dbghelp_path"
        hive="LocalMachine"
        failonerror="true" />

    <setenv name="PATH" value="${path::combine(vcInstallDir, 'bin')};${vs10dbghelp};${sdkInstallRoot};${vs10Win32Tools};${environment::get-variable('PATH')};" />
    <setenv name="INCLUDE" value="${path::combine(WindowsSdkDir, 'include')};${path::combine(vcInstallDir, 'atlmfc/include')};${path::combine(vcInstallDir, 'include')};${environment::get-variable('INCLUDE')}" />
    <setenv name="LIB" value="${path::combine(WindowsSdkDir, 'lib')};${path::combine(vcInstallDir, 'atlmfc/lib')};${path::combine(vcInstallDir, 'lib')};${environment::get-variable('LIB')}" />
    <setenv name="LIBPATH" value="${path::combine(installRoot, 'v4.0.30319')};${path::combine(installRoot, 'v3.5')};${path::combine(WindowsSdkDir, 'lib')};${path::combine(vcInstallDir, 'atlmfc/lib')};${path::combine(vcInstallDir, 'lib')};${environment::get-variable('LIBPATH')}" />
</project> 

注册表路径是VS2010的一个作为相应的SDK正在它的时间...



Answer 8:

我有类似的问题4.5,这解决了我的问题:

http://www.donnfelker.com/nant-sdkinstallroot-has-not-been-set/

我有一个64位的机器,但达网络被安装为32位。 该sdkInstallRoot无法找到正确的路径。 我在注册表编辑器检查找到正确的路径和替换nant.exe.config的条目。

我换成:

<locatesdk property="sdkInstallRoot" minwinsdkver="v7.0A" minnetfxver="4.0" maxnetfxver="4.0.99999" failonerror="false" />

有了这个:

<readregistry
                            property="sdkInstallRoot"
                            key="SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools\InstallationFolder"
                            hive="LocalMachine"
                            failonerror="false" />


文章来源: Building .NET 4 projects with Nant