Создание.NET 4 проекта с Nant

Когда вы создаете массив следующим образом:

var arr1 = new Array( 4 );

вы получаете массив, который имеет длину 4, но в котором нет элементов . Вот почему map не преобразует массив - в массиве нет элементов для преобразования.

С другой стороны, если вы сделаете:

var arr2 = [ undefined, undefined, undefined, undefined ];

вы получите и массив, который также имеет длину 4, но у действительно есть 4 элемента.

Обратите внимание на разницу между отсутствием элементов и наличием элементов со значениями undefined. К сожалению, выражение доступа к свойству в обоих случаях будет иметь значение undefined, поэтому:

arr1[0] // undefined
arr2[0] // undefined

Однако существует способ дифференцировать эти два массива:

'0' in arr1 // false
'0' in arr2 // true
36
задан plaureano 1 August 2009 в 03:07
поделиться

6 ответов

Если вы хотите использовать nant для создания проектов, ориентированных на .NET 4.0, вам придется изменить NAnt.exe.config и добавить целевую структуру net-4.0 и добавить строку в раздел >.

13
ответ дан 27 November 2019 в 06:09
поделиться

Это очень похоже на следующие вопросы / проблемы:

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>
2
ответ дан 27 November 2019 в 06:09
поделиться

http://paigecsharp.blogspot.com/2009/08/nant-net-framework-40-Configuration.html - полный код для файла .Config для NANT.

5
ответ дан 27 November 2019 в 06:09
поделиться

15 апреля 2010 г., ... Обновите правильный ответ Юджина после того, как были выпущены .net 4 и vs2010.

Я скачал среду выполнения vs2010 и .net 4. Производственная версия выглядит 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 до

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

, так что мой сценарий nant проекта использует компилятор .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" />
23
ответ дан 27 November 2019 в 06:09
поделиться

Просто чтобы поместить туда информацию, чтобы я мог найти ее снова. , чтобы создавать проекты C ++ без изменения переменной окружения 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 не торопится ...

0
ответ дан 27 November 2019 в 06:09
поделиться

Я использовал все ответы выше, но все равно столкнулся с некоторыми странными ошибками сборки: «ошибка MSB6006:« AL.exe »завершился с кодом 128». Ошибка совершенно бесполезна. Я погуглил и нашел несколько ответов. Вот ссылки: msdn help и asp.net форумы

Я боролся с этой ошибкой целый день, изучая «подробные» и «диагностические» журналы, но все, что она сделала, это указывая мне на сборку, которая рухнула. Конкретной ошибки нет. Я даже не смог его продублировать на свой локальный бокс. Наконец, я решил попробовать предложение о соглашении об именах файлов ресурсов во второй ссылке ( форумы asp.net ) и ... alleluia! моя сборка заработала. Я не знаю, что случилось с ошибкой сборки из-за имени ресурса, я все еще работаю над этим, но моей ближайшей целью было заставить сборку работать.

Надеюсь, это поможет кому-то еще.

1
ответ дан 27 November 2019 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: