Свойство MSBuild OutputPath и абсолютные пути - PullRequest
8 голосов
/ 07 июня 2010

Я пытаюсь установить значение OutputPath в абсолютный путь:

<OutputPath>c:\Projects\xxx\Deployment</OutputPath>

Но я получаю эту ошибку:

Error   17  The expression "[System.IO.Path]::GetFullPath(D:\Projects\xxx\trunk\xxx.Web.Deployment\c:\Projects\xxx\Deployment\)" cannot be evaluated. The given path's format is not supported.     1   1   xxx.Web.Deployment

Есть ли способ использовать абсолютный путь со свойством OutputPath? Я попытался поэкспериментировать со свойством BaseOutputPath:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deployment|AnyCPU'">
  <BaseOutputPath>C:\Projects\xxx\</BaseOutputPath>
  <OutputPath>.\Deployment</OutputPath>
  <EnableUpdateable>true</EnableUpdateable>
  <UseMerge>true</UseMerge>
  <SingleAssemblyName>xxx.Web.Deployment</SingleAssemblyName>

Но, похоже, это игнорируется. Для чего используются BaseOutputPath и BaseIntermediateOutputPath?

Ответы [ 4 ]

5 голосов
/ 07 июня 2010

Я не уверен, что вы можете делать то, о чем говорите, но вы можете добавить что-то похожее на следующее:

<PropertyGroup>  
    <CentralisedBinariesFolderLocation>c:\wherever</CentralisedBinariesFolderLocation>
</PropertyGroup>  

<Target Name="AfterBuild">
    <Exec Command="xcopy /Y /S /F /R &quot;$(TargetPath)&quot; &quot;$(CentralisedBinariesFolderLocation)&quot;" />
</Target>

Который скопирует его в соответствующее место после сборки.

3 голосов
/ 07 июня 2010

Попробуйте использовать OutDir вместо OutputPath:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Deployment|AnyCPU'">
  <OutDir>C:\Projects\xxx\$(Configuration)</OutDir>
  <EnableUpdateable>true</EnableUpdateable>
  <UseMerge>true</UseMerge>
  <SingleAssemblyName>xxx.Web.Deployment</SingleAssemblyName>
</PropertyGroup>
0 голосов
/ 27 мая 2011

Вместо всех шагов в октябрьском ответе, нельзя ли просто определить WebPublishPipelineProjectDirectory с тем же путем, что и OutputPath?

Я попробовал это в своем решении CI (используя CruiseControl), и это, казалось, работало.

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

0 голосов
/ 22 октября 2010
  1. Скопируйте файлы .target и .dll из каталога установщика
  2. Измените строки вверху, которые выглядят следующим образом: и c * укажите эти файлы .target и .dll в папке вашего поставщика рядом с скопированным файлом Microsoft.WebDeployment.targets, который вы редактируете *. Установите attr, AssemblyFile = "Microsoft.Web.Publishing.Tasks.dll"
  3. Добавьте строку True к исходной PropertyGroup .
  4. Установите OutputPath как вам нужно в фактическом файле / других тегах / другом файле build-proj.
  5. Редактировать строку ~ 290 в $ (OutputPath)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...