开发者

MSBuild OutputPath property and absolute paths

开发者 https://www.devze.com 2023-01-03 01:51 出处:网络
I\'m trying to set the OutputPath value to an absolute path: <OutputPath>c:\\Projects\\xxx\\Deployment</OutputPath>

I'm trying to set the OutputPath value to an absolute path:

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

But I get this error:

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

Is there a way to use an absolute path with the OutputPath property? I've tried experimenting with the BaseOutputPath property:

<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>

But it seems to get ignored. What are BaseOutputPath and BaseIntermediateOutputPath used for?


I'm not sure whether you can do what you're talking about, but you can add something similar to the following:

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

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

Which will copy it to the relevant location after the build.


Try using OutDir instead of 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>


  1. Copy the .target and .dll files from the installer directory
  2. Modify the lines at the top that look like <UsingTask TaskName="GetProjectProperties" AssemblyFile="../../ ..lallal/VisualStudio/v10.0/Microsoft.Web.Publishing.Tasks.dll"/> and c*opy those .target and .dll files to your vendors folder next to the copied Microsoft.WebDeployment.targets-file your are editing*. Set the attr, AssemblyFile="Microsoft.Web.Publishing.Tasks.dll"
  3. Add the line <EnablePackageProcessLoggingAndAssert Condition="'$(EnablePackageProcessLoggingAndAssert)' == ''">True</EnablePackageProcessLoggingAndAssert> to the initial PropertyGroup.
  4. Set the OutputPath as you wish in the actual file/other tagets/other build-proj file.
  5. Edit line ~290 to <WebPublishPipelineProjectDirectory Condition="'$(WebPublishPipelineProjectDirectory)'==''">$(OutputPath)</WebPublishPipelineProjectDirectory>


Instead of all the steps in the October answer, is it not possible just to define WebPublishPipelineProjectDirectory with the same path as OutputPath?

I tried it in my CI solution (using CruiseControl) and it seemed to work.

Does anyone know of any side effects that are not apparent to me from doing this?

0

精彩评论

暂无评论...
验证码 换一张
取 消