У меня есть решение VS 2010, который использует конфигурационный преобразуется как так:Teambuild 2013 конфиг преобразования не в состоянии найти PublishDir
<Target Name="AfterBuild">
<TransformXml Condition="'$(IsDesktopBuild)' == 'false'" Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="$(PublishDir)\_PublishedWebsites\$(ProjectName)\Web.config" />
<Delete Files="$(PublishDir)\_PublishedWebsites\$(ProjectName)\Web.Debug.config" Condition="'$(IsDesktopBuild)' == 'false'" />
<Delete Files="$(PublishDir)\_PublishedWebsites\$(ProjectName)\Web.Release.config" Condition="'$(IsDesktopBuild)' == 'false'" />
<Delete Files="$(PublishDir)\_PublishedWebsites\$(ProjectName)\Web.Something.config" Condition="'$(IsDesktopBuild)' == 'false'" />
<Delete Files="$(PublishDir)\_PublishedWebsites\$(ProjectName)\Web.Else.config" Condition="'$(IsDesktopBuild)' == 'false'" />
<AspNetCompiler Condition="('$(IsDesktopBuild)' != 'false') AND ('$(MvcBuildViews)'=='true')" VirtualPath="temp" PhysicalPath="$(ProjectDir)\..\$(ProjectName)" />
<AspNetCompiler Condition="('$(IsDesktopBuild)' == 'false') AND ('$(MvcBuildViews)'=='true')" VirtualPath="temp" PhysicalPath="$(PublishDir)\_PublishedWebsites\$(ProjectName)" />
</Target>
Это в каждом сайте проекта (.csproj) в .sln.
Когда я запускаю v 4.0 MSBuild с помощью/p: PublishDir указывает, что все в порядке. Но когда я запускаю это как определение сборки, используя шаблон по умолчанию (GitTemplate.xaml), папка по какой-либо причине разрешает $(ProjectDir)
, а не местоположение публикации. поэтому цель преобразования пытается скопировать файлы в папку, которая не существует ($(ProjectDir)\_PublishedWebsites\$(ProjectName)\Web.config
).
Если я вручную укажу /p: PublishDir в STATIC на диске, сборка будет успешной. Как я могу сказать MSBuild, где фактически находится PublishDir?
Я рад изменить рабочий процесс, чтобы назначить переменную или что-то еще, я просто не вижу, как это возможно.
Я также попытался указать относительные пути (например, /p:PublishDir="..\..\bin\\"
) и переменные агента сборки команды (такие же, как мы сконфигурировали для путей сборки, например /p:PublishDir="D:\$(BuildAgentId)\$(BuildDefinitionId)\bin\\"
) бесполезно - кажется, что переменные не разворачиваются, а относительный путь не " т работы.
спасибо так много :) – zaitsman