Как заставить трансформации VS2010 Web.config работать от NAnt? - PullRequest
2 голосов
/ 09 июня 2010

В моем файле Nant у меня есть (сокращенные пути):

<echo message="#### TARGET - compile ####"/>
<echo message=""/>
<echo message="Build Directory is ${build.dir}" />

<exec program="${framework}\msbuild.exe"
      commandline="..\src\Solution.sln /m /t:Clean /p:Configuration=Release" />

<exec program="${framework}\msbuild.exe"
      commandline="..\src\Solution.sln /m /t:Rebuild  /p:Configuration=Release" />

<exec program="${framework}\msbuild.exe"
      commandline="..\src\Solution.sln /m /t:TransformWebConfig /p:Configuration=Release" />

Что приводит к:

Build FAILED.       "C:\..\src\Solution.sln" (TransformWebConfig target) (1) ->         C:\..\src\Solution.sln.metaproj : error MSB4057: The target "TransformWebConfig" does not exist in the project. [C:\..\src\Solution.sln]    0 Warning(s)    1 Error(s)Time Elapsed 00:00:00.05

Все решение и связанные проекты - VS2010, и веб-приложение даже имеет правильную ссылку в .csproj:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />

Разве это не должно работать?

Ответы [ 2 ]

4 голосов
/ 10 июня 2010

Вы не можете, это не проблема, специфичная для NAnt, вы просто не можете вызвать TransformWebConfig в файле решения.

Решения:

  • Позвоните в файл проекта:

     <exec program="${framework}\msbuild.exe"
           commandline="..\src\WebApp\WebApp.csproj /m /t:TransformWebConfig /p:Configuration=Release" />
    
  • Переопределите цель AfterBuild в файле проекта, чтобы вызвать TransformWebConfig:

    <Target Name="AfterBuild">
      <CallTarget Targets="TransformWebConfig"/>
    </Target>
    
3 голосов
/ 31 августа 2010

Я не мог заставить его работать ни с параметром TransformWebConfig, ни с целью AfterBuild. Однако этот пост был для меня ответом.Короче говоря, вот как выглядит моя цель сборки в Nant:

<target name="build" description="Compiles/Builds the Solution">
<echo message="Building..." />
<property name="build.configuration" value="Release" />

<msbuild project="${path::combine(staging.project,'_solutions\mySolutionName.sln')}" verbosity="minimal" failonerror="true" verbose="false">
    <arg value="/p:Configuration=${build.configuration};OutputPath=${path::combine(staging.output,'bin')}" />
    <arg value="/p:UseWPP_CopyWebApplication=True" />
    <arg value="/p:PipelineDependsOnBuild=False" />
    <arg value="/p:WebProjectOutputDir=${staging.output}\" />
    <arg value="/t:Rebuild" />
    <arg value="/nologo" />
</msbuild>
<echo message="Building finished..." />

Все файлы, необходимые для запуска веб-сайта, копируются в указанное свойство "WebProjectOutputDir",включая web.Config с примененными преобразованиями.это работает как шарм:)

-Diego

...