2010-03-12 9 views
3

J'ai un projet mixte Java/C# et utiliser un script fourmi qui contient une tâche de compiler le csc dll. Cela fonctionne, mais je reçois un avertissementComment remplacer la tâche fourmi csc dépréciée

[csc] This task is deprecated and will be removed in a future version 
    [csc] of Ant. It is now part of the .NET Antlib: 
    [csc] http://ant.apache.org/antlibs/dotnet/index.html 

Comment puis-je remplacer la tâche csc? Je peux sûrement créer une tâche exec appelant nant avec un fichier project.build, mais cela semble complètement faux. Pour clarifier: Je l'utilise principalement sur Linux et l'écriture du script Nant pour compiler la partie C# du projet ne pose aucun problème. À l'heure actuelle, je l'appelle à partir du script Ant par

<target name="build-mono-stuff"> 
    <exec executable="nant"> 
     <arg value="build-stuff"/> 
    </exec> 
</target> 

mais j'espérais trouver une meilleure solution que d'invoquer un exec.

EDIT 2 J'ai donc essayé de faire fonctionner le nant de .NET AntLib. C'est de savoir jusqu'où je suis arrivé:

<taskdef name="mono-compile" classname="org.apache.ant.dotnet.build.NAntTask"> 
    <classpath location="lib/ant-dotnet-1.0.jar" /> 
</taskdef> 
<target name="build-mono-stuff"> 
    <mono-compile buildfile="mono.build"></mono-compile> 
</target> 

Première course:

[mono-compile] Cannot open assembly 'NAnt.exe': No such file or directory. 

Puis-je mettre NAnt.exe du paquet Ubuntu Nant dans le PATH et je reçois

[mono-compile] The "nant" section in the NAnt configuration file (/bin/NAnt.exe.config) is not available. 

Toutes les idées ?

+0

Et le .NET Antlib il vous montre du doigt ne convient pas? –

+0

Je ne sais pas comment cela fonctionne du tout. Je serais heureux, si vous pouviez me donner un exemple d'invoquer cette tâche .NET Antlib (si possible à partir de mon script ant). – GrGr

Répondre

0

avoir aucune expérience avec Ant, voici comment je le ferais dans NAnt:

<msbuild buildfile="foo.csproj"> 
    <property name="Configuration" value="Debug" /> 
    <!-- ... --> 
    </msbuild> 

Vous pouvez passer C# fichiers de projet (ou même des fichiers de solution Visual Studio) directement à MSBuild. Cela devrait être beaucoup plus pratique que de le faire par l'intermédiaire du SCC. Recherchez une liste des propriétés MSBuild courantes here.

1

Dans mes propres fichiers NAnt, je ne pas utiliser la tâche <msbuild> - j'exécute l'application directement msbuild.exe:

<!-- Ensure MSBuild is available --> 
<property name="msbuild.dir" 
      value="C:\WINDOWS\Microsoft.NET\Framework\v3.5"/> 
<property name="msbuild.exe" 
      value="${path::combine(msbuild.dir, 'MSBuild.exe')}"/> 
<fail message="MSBuild not fould in ${msbuild.dir}" 
     unless="${file::exists(msbuild.exe)}"/> 

<!-- Compile everything --> 
<exec program="${msbuild.exe}"> 
    <arg file="NAntGraph2.sln"/> 
    <arg value="/t:rebuild"/> 
    <arg value="/verbosity:quiet"/> 
</exec> 

Vous devriez être en mesure de faire quelque chose assez similaire dans votre script ant.

Note: cela ne suppose que vous avez msbuild disponibles, et un fichier de style Visual Studio .sln disponible, il est donc pas un remplacement de 100% pour csc, juste celui qui convient à la plupart des situations.

1

Le message d'erreur vous dit tout.

Vous devriez éviter d'utiliser des commandes de bas niveau tels que csc, et passer à construire votre projet * .csproj avec ou exécuter le script NANT qui sont disponibles dans la bibliothèque .NET Ant.

http://ant.apache.org/antlibs/dotnet/index.html

Il est tout comme l'utilisation d'une autre bibliothèque ANT et la page fournit déjà des exemples de base.

Questions connexes