2010-11-23 5 views
3

Ich versuche, unseren Build-Prozess zu automatisieren. Um dies zu tun, muss ich den app_code in einer asp.Net-Website zu einer DLL kompilieren, damit ich NUnit-Test gegen den Code ausführen kann. Bevor Sie vorschlagen, dass ich nur eine Klassenbibliothek verwende, werde ich sagen, dass ich Ihnen zustimme, meine Vorgesetzten jedoch eine andere Sichtweise haben und die Verwendung von DLLs in unseren Websites abgelehnt haben.Wie schließe ich Verweise auf Webdienste in NANT oder csc.exe ein?

Das Problem, das ich habe, ist, dass die app_code Klassen Webdienste referenzieren. Wie bekomme ich die CSC-Aufgabe, diese beim Kompilieren des Codes in eine Klassenbibliothek einzuschließen? Die Nant Ziel die ich bisher habe, ist:

<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> 

Wenn es eine andere Art und Weise meine Ziele dann erreichen Sie mich bitte.

Al

Antwort

1

Was Sie höchstwahrscheinlich nach sind, um die Web-Service-Proxy-Klasse zu erzeugen, und dass in in Ihr Projekt zu kompilieren. Sehen Sie sich dazu die Aufgabe wsdl an, die Teil von NantContrib ist.

Sie einmal so etwas wie die folgenden Funktionen ausführen:

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

Sie können dann die Ausgabe dieser Aufgabe (MyProxy.cs) und in Ihr Projekt kompilieren.

+0

Danke, kurz nach dem Posten dieser Frage entdeckte ich wsdl.exe –

+0

Ist dies eine gültige Methode für "Service-Referenzen", in einem .NET-Projekt? Ich bin verwirrt, wenn ich eine Proxy-Klasse verwenden oder das Objekt "Service Reference" direkt referenzieren muss? – D3vtr0n

+0

@devtron: Die Aufgabe ist nur für Webdienste, nicht die WCF-basierten Dienste, von denen ich annehme, dass Sie sich beziehen. WCF-Dienstverweise werden vom ServiceModel-Metadaten-Dienstprogramm (svcutil.exe) generiert. Sie könnten den Task verwenden, um zu svcutil.exe aufzurufen und die Ausgabedatei zu übernehmen, die generiert wird, um sie in den Quellblock aufzunehmen (genau wie MyProxy.cs). –