2010-11-23 1 views
3

Im пытается автоматизировать процесс сборки. Для этого мне нужно скомпилировать app_code на сайте asp.Net в dll, чтобы я мог запускать NUnit-тест против кода. Прежде чем вы предлагаете мне просто использовать библиотеку классов, я скажу, что я согласен с вами, но мои начальники, однако, придерживаются другого мнения и наложили вето на использование библиотек DLL на наших веб-сайтах.Как включить ссылки на веб-службы в NANT или csc.exe?

Проблема в том, что классы app_code ссылаются на веб-службы. Как мне заставить задачу csc включать их при компиляции кода в библиотеку классов? Намеренная цель, которой я до сих пор:

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

Если есть другой способ достижения моих целей, то, пожалуйста, дайте мне знать.

Al

ответ

1

Что вы, скорее всего, после создания класса прокси веб-службы и компиляции, что в в ваш проект. Чтобы сделать это, взгляните на задачу wsdl, которая является частью NantContrib.

Вы будете в состоянии сделать что-то вроде следующего:

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

Вы можете взять вывод этой задачи (MyProxy.cs) и скомпилировать его в свой проект.

<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

Спасибо, вскоре после публикации этого вопроса я обнаружил wsdl.exe –

+0

ли это действительный метод «Ссылки Сервис», в проекте .NET? Я смущен, если мне нужно использовать прокси-класс или фактически ссылаться на объект «Сервис-ссылка» напрямую? – D3vtr0n

+0

@devtron: Задача предназначена только для веб-служб, а не для служб на основе WCF, о которых я предполагаю, что вы имеете в виду. Ссылки службы WCF генерируются службой метаданных ServiceModel (svcutil.exe). Вы можете использовать задачу , чтобы вызвать svcutil.exe и взять выходной файл, который генерируется для включения в блок источников (как и MyProxy.cs). –