2010-11-23 39 views
3

J'essaie d'automatiser notre processus de construction. Pour ce faire, j'ai besoin de compiler le app_code dans un site Web asp.Net à une DLL afin que je puisse exécuter le test NUnit contre le code. Avant de suggérer que j'utilise juste une bibliothèque de classes, je dirai que je suis d'accord avec vous, mes supérieurs cependant, adoptent un point de vue différent et ont opposé leur veto à l'utilisation des DLLs dans nos sites Web.Comment inclure des références aux services Web dans NANT ou csc.exe?

Le problème que j'ai, c'est que les classes app_code référencent les services web. Comment puis-je obtenir la tâche csc pour les inclure lors de la compilation du code dans une bibliothèque de classes? La cible de nant que j'ai jusqu'ici est:

<target name="Compile"> 
    <property name="nant.settings.currentframework" value="net-3.5" /> 
    <csc target="library" output="DocSysAppCode.dll" debug="true"> 
     <sources> 
     <include name="D:\Inetpub\DocSys\App_Code\Common\*.cs" /> 
     <include name="D:\Inetpub\DocSys\App_Code\DocSys\SiteLegislation.generated.cs" /> 
     </sources> 
     <resources> 
     <include name="D:\DocSysQueue\Web References\WS_DocSys\*.*" /> 
     <include name="D:\DocSysQueue\app.config" /> 
     </resources> 
    </csc> 
</target> 

S'il y a un autre moyen d'atteindre mes objectifs alors s'il vous plaît faites le moi savoir.

Al

Répondre

1

Qu'est-ce que vous êtes après le plus probable génère le service Web classe proxy et la compilation qui en dans votre projet. Pour cela, jetez un coup d'œil à la tâche wsdl qui fait partie de NantContrib.

Vous serez en mesure de faire quelque chose comme ce qui suit:

<target name="generate-proxy"/> 
    <wsdl path="${wsdl.url}" language="CS" namespace="svc" outfile="MyProxy.cs" verbose="true" /> 
</target> 

Vous pouvez ensuite prendre la sortie de cette tâche (MyProxy.cs) et le compiler dans votre projet.

<target name="Compile" depends="generate-proxy"> 
    <property name="nant.settings.currentframework" value="net-3.5" /> 
    <csc target="library" output="DocSysAppCode.dll" debug="true"> 
     <sources> 
     <include name="MyProxy.cs" /> 
     <include name="D:\Inetpub\DocSys\App_Code\Common\*.cs" /> 
     <include name="D:\Inetpub\DocSys\App_Code\DocSys\SiteLegislation.generated.cs" /> 
     </sources> 
    </csc> 
</target> 
+0

Merci, peu de temps après la publication de cette question que je découvre wsdl.exe –

+0

Est-ce une méthode valable pour « Service Références », dans un projet .NET? Je suis confus si j'ai besoin d'utiliser une classe proxy ou référence réellement l'objet "Service Reference" directement? – D3vtr0n

+0

@devtron: La tâche est réservée aux services Web et non aux services basés sur WCF auxquels vous faites référence. Les références de service WCF sont générées par l'utilitaire de métadonnées ServiceModel (svcutil.exe). Vous pouvez utiliser la tâche pour appeler svcutil.exe et prendre le fichier de sortie qui est généré à inclure dans le bloc sources (tout comme MyProxy.cs). –