Публикация WebApplication с помощью NAnt - PullRequest
4 голосов
/ 31 марта 2009

Можно ли выполнить публикацию (как в публикации Visual Studio в проекте веб-приложения) для решения с использованием NAnt? Я просто не могу найти решение.

Ответы [ 4 ]

7 голосов
/ 31 марта 2009

Ключом является использование встроенной цели _CopyWebApplication.

Вот что я делаю

<target name="compile" description="Compiles the project.">
        <exec basedir="." program="${DotNetPath}msbuild.exe" commandline=" src/MyProject.Web/MyProject.Web.csproj /nologo 
  /t:Rebuild
  /t:ResolveReferences;_CopyWebApplication
  /p:OutDir=../../output/build/bin/
  /p:WebProjectOutputDir=../../output/build/
  /p:Debug=${debug}
  /p:Configuration=${configuration}
  /v:m"
    workingdir="." failonerror="true" />
    </target>

со структурой dir:

/project.build
/src/myprojct.sln
/src/myporject.web/myproject.web.csproj
/output

Редактировать: я также использую это, чтобы использовать сжатие YUI для сжатия моих css и js

<target name="compress-js">
        <foreach item="File" property="filename">
            <in>
                <items basedir="output/build/assets/javascript/">
                    <include name="/**/*.js" />
                    <exclude name="/**/*.min.js" />
                    <exclude name="/**/*.pack.js" />
                </items>
            </in>
            <do>
                <exec basedir="." program="${JavaPath}java" commandline=" -jar S:\yuicompressor-2.4.1\build\yuicompressor-2.4.1.jar --type js --charset utf-8 -o &quot;${filename}&quot; &quot;${filename}&quot;" failonerror="true" />
            </do>
        </foreach>
    </target>


    <target name="compress-css" depends="combine-css">
        <foreach item="File" property="filename">
            <in>
                <items basedir="output/build/assets/css/">
                    <include name="/**/*.css" />
                    <exclude name="/**/*.min.css" />
                    <exclude name="/**/*.pack.css" />
                </items>
            </in>
            <do>
                <exec basedir="." program="S:\Java\jdk1.6.0_11\bin\java" commandline=" -jar S:\yuicompressor-2.4.1\build\yuicompressor-2.4.1.jar --type css --charset utf-8 -o &quot;${filename}&quot; &quot;${filename}&quot;" failonerror="true" />
            </do>
        </foreach>
    </target>
5 голосов
/ 24 апреля 2009

Использование MSBuild превосходит цель использования NAnt, NAnt - это то, что заменяет MSBuild, используйте приведенную ниже для чистой компиляции проектов NAnt, как в VS 2003/2005/2008.

У меня работает!

<?xml version="1.0"?>
<project name="MyTest" default="run">
    <property name="basename" value="MyTest1x"/>
    <property name="debug" value="false"/>
    <property name="copytarget" value="c:\temp"/>

    <target name="clean">
        <delete>
            <fileset basedir="${copytarget}">
                <include name="bin/${basename}.dll"/>
                <include name="**/*.???x"/>
                <include name="Web.config"/>
            </fileset>
        </delete>
    </target>

    <target name="build">
        <mkdir dir="${copytarget}/bin" />
        <csc target="library" output="${copytarget}/bin/${basename}.dll" >
            <sources>
                <include name="*.cs"/>
            </sources>
        </csc>
    </target>

    <target name="run" depends="clean,build">
    <copy todir="${copytarget}" overwrite="true">
      <fileset basedir=".">
             <include name="**/*.???x" />
             <include name="Web.config" />
          </fileset>
       </copy>
   </target>
</project>
3 голосов
/ 03 апреля 2012

Я знаю, что это старый вопрос, но я кое-что узнал, поэтому я решил поделиться: хотя на 100% верно, что цель _CopyWebApplication существует и работает, в .NET 4.0 она была заменена с помощью цели «_WPPCopyWebApplication» в Microsoft.Web.Publishing.targets, которая поддерживает новые функции, такие как синтаксис преобразования web.config и т. д.

(репост на все похожие вопросы, так что не голосуйте за этот :))

2 голосов
/ 29 мая 2009

Вот как вы можете сделать это, используя задачу MSBUILD для nant:

<property name="debug" value="AutomatedDebug" />
<property name="configuration" value="Debug;TargetFrameworkVersion=v3.5" />

    <msbuild project="src\WebApplication1\WebApplication1.csproj" failonerror="true">
      <arg value="/nologo" />
      <arg value="/t:Rebuild" />
      <arg value="/t:ResolveReferences;_CopyWebApplication" />
      <arg value="/p:OutDir=../../build/Debug/WebApplication/" />
      <arg value="/p:WebProjectOutputDir=../../build/Debug/WebApplication-Deploy/" />
      <arg value="/p:Debug=${debug}" />
      <arg value="/p:Configuration=${configuration}" />
      <arg value="/v:m" />
    </msbuild>

Это скомпилирует WebApplication в развертываемую папку, так же, как с помощью функции «Опубликовать» из Visual Studio.

...