Building.NET 4 projets avec Nant

Comment puis-je obtenir nant pour construire des projets qui ciblent le cadre .net 4.0?

36
demandé sur plaureano 2009-08-01 07:07:30

8 réponses

2010 le 15 avril ... Mise à jour à la réponse correcte ci-dessus de Eugene, après .net 4 et vs2010 a été publié.

j'ai téléchargé vs2010 et.net 4 runtime. La version de production semble être v4.30319 ie (C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319)

après révision de http://paigecsharp.blogspot.com/2009/08/nant-net-framework-40-configuration.html ,... J'ai collé le texte et j'ai changé tout le texte de v4.0.20506 à v4.30319 an ajout de texte à NAnt.EXE.config.

j'ai alors mis à jour mon script nant en

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

présente donc mon projet nant de script utilise le .net 4 compilateur

et ça m'a donné un nant build avec le binaire .net 4 ....

mise à jour 2010-06-14: la réponse ci-dessus a été nant-0.85, je suis passé à nant-0.90 et a dû ajouter vendor="Microsoft" à l'attribut framework qui est ajouté à Nants config. Aussi, il semble comme nant0.9 trouve les bibliothèques .net différemment, car j'ai dû ajouter quelque chose comme ça à ma compilation nant.XML. ..

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

et

<include name="${dotNetReferenceAssemblyPath}System.ComponentModel.DataAnnotations.dll" />
23
répondu user206890 2016-02-23 17:56:33

si vous voulez utiliser nant pour construire des projets ciblant .NET 4.0, vous devrez modifier NAnt.exe.config et ajouter le cadre de cible net-4.0 et ajouter une ligne <supportedRuntime ... /> à la section <startup >.

13
répondu Mitch Wheat 2009-08-01 03:14:55

http://paigecsharp.blogspot.com/2009/08/nant-net-framework-40-configuration.html est un code complet pour .fichier de configuration pour NAnt.

5
répondu Eugene Petrenko 2010-01-20 12:36:16

c'est assez similaire à ces questions/problèmes:

tâche ou msbuild.exe avec NAnt?

une autre option serait d'appeler directement MSBuild à partir d'un bloc.

<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
répondu Babak Naffas 2017-05-23 10:32:55

j'ai utilisé toutes les réponses ci-dessus et j'ai quand même rencontré des erreurs de construction bizarres: "erreur MSB6006:" AL.exe "sorti avec le code 128". Erreur n'est pas utile à tous. J'ai cherché sur Google et j'ai trouvé peu de réponses. Voici les liens: msdn et asp.net les forums de

j'ai lutté avec cette erreur pendant une journée entière, en étudiant les logs" détaillé "et" diagnostic", mais tout ce qu'il a fait est de pointer vers l'assemblée qui a échoué bâtiment. Pas d'erreur spécifique. Je n'ai même pas pu le reproduire sur ma boîte locale. Enfin, j'ai décidé d'essayer la suggestion sur la convention de nommage des fichiers ressources dans le second lien ( asp.net forums ) et... alléluia! ma construction a commencé à fonctionner. Je ne sais pas ce qui se passe avec l'échec de la construction à cause du nom de la ressource, qui travaille encore là-dessus, mais mon objectif immédiat était de faire fonctionner la construction.

J'espère que ça aidera quelqu'un d'autre.

1
répondu Diego C. 2010-05-04 19:06:41

NAnt de 0,86 et, plus tard, fonctionne hors de la boîte. Comme d'écrire ces lignes, je suis à l'aide de 0,91.

lors du téléchargement à partir du réseau, rappelez-vous de " "débloquer " le fichier zip (réinitialiser la zone de sécurité) avant de déballer.

1
répondu Jirka Hanika 2012-05-10 09:44:20

juste pour y mettre l'info pour que je puisse la retrouver, pour construire des projets C++ sans modifier la variable D'environnement PATH et créer des variables LIB/LIBPATH/INCLUDE ou lancer nant à partir de vsvars32, quelque chose comme cela est nécessaire dans le fichier de configuration de 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.0\Setup\VC\ProductDir"
        hive="LocalMachine"
        failonerror="true" />
    <readregistry
        property="vs10dbghelp"
        key="SOFTWARE\Microsoft\VisualStudio.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> 

le chemin du registre est celui de VS2010 comme le SDK correspondant prend son temps...

0
répondu Julien Roncaglia 2010-04-27 12:45:40

j'ai eu un problème similaire pour 4.5, cela a résolu mon problème:

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

j'ai une machine 64 bits mais .net est installé en 32 bits. Le sdkInstallRoot n'est pas capable de trouver le bon chemin. J'ai vérifié dans mon éditeur de Registre pour trouver le chemin correct et remplacé l'entrée dans nant.EXE.config.

j'ai remplacé:

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

avec ceci:

<readregistry
                            property="sdkInstallRoot"
                            key="SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFx40Tools\InstallationFolder"
                            hive="LocalMachine"
                            failonerror="false" />
0
répondu radkan 2016-07-14 21:43:51