2013-12-19 2 views
0

У меня возникает сценарий, когда мне нужно заменить некоторые файлы в моем проекте во время публикации другими пользовательскими файлами. Дело в том, что у нас есть несколько сайтов, которые используют одну и ту же базу кода. Однако для некоторых веб-сайтов требуется настроенная версия развернутых файлов (например, favicon.ico, Error.aspx ...).Замените файлы проекта VS при веб-публикации (Web Deploy)

Я пытался включить эти файлы как «лишние файлы» в моих projectName.wpp.targets как упомянуто Here in Sayed Ibrahim Hashimi blog но они получают перезаписаны исходных файлов проекта при публикации.

Из опубликованного вывода видно, что в пакет включены «дополнительные файлы», но затем они заменяются одними и теми же файлами проекта.

Есть ли способ сообщить MS Deploy включить мои файлы после того, как файлы содержимого проекта включены, чтобы мои файлы перезаписывались?

------------ Обновление ------------------

я узнал из журнала ниже (спасибо Дэвид Мартин комментирует), что файлы не перезаписываются, а скорее пропускаются, потому что файлы в проекте новее, чем те, которые я пытаюсь включить:

CopyPipelineFiles: Пропустить копирование F: \ Дополнительные файлы для развертывания сайтов \ xxx \ favicon.ico to obj \ xxx \ Package \ PackageTmp \ favicon.ico, Файл obj \ xxx \ Package \ PackageTmp \ favicon.ico обновлен

Так есть способ принудительного включения этих файлов даже если они старше в пакет?

+0

Вы уверены, что они в настоящее время заменены и не разворачиваются в другое место? –

+0

Да, они развертываются в нужном месте, НО ваш комментарий заставил меня внимательно посмотреть журнал публикации, чтобы узнать, что он фактически не включен в пакет, потому что измененная дата для дополнительных файлов старше, чем файлы в проект. Я обновлю свой вопрос, чтобы включить это. Спасибо! –

ответ

1

ОК, поэтому я нашел исправление для этого и опубликую здесь, если кто-то другой столкнулся с этой проблемой, но я приветствую любые другие решения!

Проблема, изложенная в моем вопросе, вызвана файлами, которые я хочу включить в мой пакет, который старше файлов в моем проекте. Поэтому мне нужно было найти способ обновить последнюю измененную дату.

я узнал, что есть «Touch» задача, которая будет делать именно то, что: http://msdn.microsoft.com/en-us/library/37fwbyt5.aspx

Так это то, что я наконец-то в моем сценарии:

<ItemGroup> 
    <Files Include="F:\Files For Sites Deployment\xxx\**\*" /> 
    </ItemGroup> 

    <PropertyGroup> 
    <CopyAllFilesToSingleFolderForMsdeployDependsOn> 
     TouchIncludeFiles; 
     CustomCollectFiles; 
     $(CopyAllFilesToSingleFolderForMsdeployDependsOn); 
     </CopyAllFilesToSingleFolderForMsdeployDependsOn> 
    </PropertyGroup> 

    <Target Name="TouchIncludeFiles"> 
    <Touch Files="@(Files)" ForceTouch="true"></Touch> 
    </Target> 
    <Target Name="CustomCollectFiles"> 
    <ItemGroup> 
     <_CustomFiles Include="@(Files)" /> 
     <FilesForPackagingFromProject Include="%(_CustomFiles.Identity)"> 
     <DestinationRelativePath>%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath> 
     </FilesForPackagingFromProject> 
    </ItemGroup> 
    </Target> 
Смежные вопросы