Вопрос

После того, как MSbuild создал мое решение (с веб-сайтом asp.net), а проект веб-развертывания создал и поместил веб-сайт в каталог _PublishedWebsites:

c:\mybuilds\buildName\Daily_20090519.3 elease_PublishedWebsites\MyWebsite.

Как мне скопировать это в фиксированный каталог, на который указывает IIS для тестового веб-сайта?

Я нашел множество фрагментов кода, но не могу найти ни одного, который бы учитывал тот факт, что имя этого каталога меняется.

Это было полезно?

Решение

Это довольно легко.Вы можете отредактировать проект и вставить что-то похожее на следующее.

<PropertyGroup>
  <OutputDest>$(MSBuildProjectDirectory)\..\OutputCopy\</OutputDest>
</PropertyGroup>
<Target Name="AfterBuild">
  <!-- Create an item with all the output files -->
  <ItemGroup>
    <_OutputFiles Include="$(OutputPath)**\*" Exclude="$(OutputPath)obj\**\*" />
  </ItemGroup>
  <!-- You probably don't want to include the files in the obj folder so exclude them. -->

  <Message Text="OutputDest : $(OutputDest)" />
  <Copy SourceFiles="@(_OutputFiles)"
        DestinationFiles="@(_OutputFiles->'$(OutputDest)%(RecursiveDir)%(Filename)%(Extension)')"/>
</Target>

Это то, что вы ищите?

Моя книга: Внутри Microsoft Build Engine:Использование MSBuild и Team Foundation Build

Другие советы

Я использую другую технику.

<PropertyGroup>
    <BinariesRoot>c:\BinariesForIis\</BinariesRoot>
</PropertyGroup>

А c:\BinariesForIis\ будет использоваться для скомпилированных двоичных файлов прямого вывода (перед копированием в ...\Daily_20090519.3\Release_ ...).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top