Как мне получить nant для создания проектов, нацеленных на .NET 4.0 Framework?
Создание .NET 4 проектов с Nant
Ответ 1
2010 15 апреля,... Обновление до правильного ответа от Eugene, после того, как были выпущены .net 4 и vs2010.
Я загрузил vs2010 и .net 4 runtime. Производственная версия, похоже, v4.30319, т.е. (C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319)
После просмотра http://paigecsharp.blogspot.com/2009/08/nant-net-framework-40-configuration.html,... Я вставил в текст и изменил весь текст с v4.0.20506 на v4.30319 добавлен текст в файл NAnt.exe.config.
Затем я обновил свой nant script до
<property name="nant.settings.currentframework" value="net-4.0" />,
поэтому мой проект nant script использует компилятор .net 4
И это заставило меня построить nant с бинарником .net 4....
Обновление 2010-06-14: выше было ответировано nant-0.85, я обновился до nant-0.90 и должен был добавить vendor="Microsoft"
в атрибут framework, который добавлен в конфигурацию nants. Кроме того, похоже, что nant0.9 находит библиотеки .net по-разному, так как мне пришлось добавить что-то вроде этого в мой nant 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" />
Ответ 2
Если вы хотите использовать nant для создания проектов с таргетингом на .NET 4.0, вам придется изменить NAnt.exe.config
и добавить целевую структуру net-4.0 и добавить строку <supportedRuntime ... />
в раздел <startup
> .
Ответ 3
http://paigecsharp.blogspot.com/2009/08/nant-net-framework-40-configuration.html - это полный код файла .config для NAnt.
Ответ 4
Это очень похоже на эти вопросы/проблемы:
<msbuild> task или msbuild.exe с NAnt?
Другой вариант - напрямую вызвать 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>
Ответ 5
Я использовал все ответы выше и все еще столкнулся с некоторыми странными ошибками сборки: "ошибка MSB6006:" AL.exe "вышла с кодом 128". Ошибка вообще не помогает. Я сделал несколько поисковых запросов и получил несколько ответов. Вот ссылки: msdn help и Форумы asp.net
Я боролся с этой ошибкой на целый день, изучая "подробные" и "диагностические" журналы, но все, что он сделал, указывает мне на сборку, которая не смогла построить. Никакой конкретной ошибки. Я не мог даже дублировать его в своей локальной коробке. Наконец, я решил попробовать предложение о назначении именования файлов ресурсов во второй ссылке (asp.net forums) и... alleluia! моя сборка начала работать. Я не знаю, что случилось с сбоем сборки из-за имени ресурса, все еще работающего над этим, но моей непосредственной целью было заставить работу работать.
Надеюсь, это поможет кому-то другому.
Ответ 6
NAnt 0.86 и более поздние версии. Начиная с этого, я использую 0.91.
При загрузке из сети запомните " разблокировать" zip файл (reset зона безопасности) перед распаковкой.
Ответ 7
Просто чтобы разместить информацию там, чтобы я мог ее снова найти, для создания проектов на С++ без изменения переменной environement PATH и создания переменных LIB/LIBPATH/INCLUDE или запускать nant из vsvars32, что-то вроде этого необходимо в файле конфигурации Nant:
<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 использует это время...
Ответ 8
У меня была аналогичная проблема для 4.5, это решило мою проблему:
http://www.donnfelker.com/nant-sdkinstallroot-has-not-been-set/
У меня 64-битная машина, но .net установлена как 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" />