2009-08-01 10 views

Répondre

13

Si vous souhaitez utiliser Nant pour construire des projets ciblant .NET 4.0, vous devez modifier NAnt.exe.config et ajouter le cadre cible net 4.0 et ajouter une ligne <supportedRuntime ... /> à la <startup> section.

2

C'est assez semblable à ces questions/problèmes:

<msbuild> task or msbuild.exe with 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> 
23

2010 15 avril, ... Mise à jour vers la bonne réponse 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 avoir examiné http://paigecsharp.blogspot.com/2009/08/nant-net-framework-40-configuration.html ... Je collé dans le texte et changé tous les textes de v4 .0.20506 à v4.30319 un a ajouté du texte à NAnt.exe.config.

Je puis mis à jour mon script Nant à

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

ce donc mon script Nant projet utilise le compilateur .net 4

Et cela m'a fait un Nant construire avec .net 4 binaire ....

Mise à jour 2010-06-14: La réponse ci-dessus a été obtenue avec nant-0.85, j'ai mis à niveau vers nant-0.90 et j'ai dû ajouter vendor="Microsoft" à l'attribut de structure ajouté à la configuration de nants. En outre, il semble que nant0.9 trouve les différentes bibliothèques .net, que je devais ajouter quelque chose comme ça à mon 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}\" /> 

et

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

Mise à jour de la version de NAnt à la dernière version disponible (actuellement 0.91 Alpha 2) était nécessaire pour que cela fonctionne (en plus des changements de construction et de configuration). btw, n'a pas besoin de la dernière . – Catch22

0

Juste pour mettre l'info il que je puisse trouver à nouveau, de construire C++ projets sans modifier la variable d'environement PATH et la création de variables ou Nant en cours d'exécution LIB/LIBPATH/Comprennent à partir vsvars32, quelque chose comme ce qui est nécessaire dans le fichier de configuration 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> 

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

1

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 "est sorti avec le code 128 ". Erreur pas utile du tout. J'ai fait quelques recherches sur Google et trouvé quelques réponses. Voici les liens: msdn help et asp.net forums

J'ai lutté avec cette erreur pendant une journée complète, en étudiant les journaux "détaillés" et "diagnostic", mais tout ce qu'il m'a fait est de me montrer l'assemblage qui a échoué. Aucune erreur spécifique Je ne pouvais même pas le dupliquer sur ma boîte locale.Enfin, j'ai décidé d'essayer la suggestion sur la convention de nommage des fichiers de ressources dans le deuxième lien (asp.net forums) et ... alleluia! ma construction a commencé à travailler. 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 le build.

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

1

NAnt 0,86 et versions ultérieures est prêt à l'emploi. Au moment d'écrire ceci, j'utilise 0,91. Lors du téléchargement depuis le réseau, n'oubliez pas de "unblock" le fichier zip (réinitialiser la zone de sécurité) avant de déballer.

0

J'ai eu problème similaire pour 4.5, cette 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é comme 32 bits. Le sdkInstallRoot n'est pas capable de trouver le chemin correct. J'ai vérifié dans mon éditeur de registre pour trouver le bon chemin et remplacé l'entrée dans nant.exe.config.

Je 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" /> 
Questions connexes