MSBuild OutputPath property and absolute paths

10,302

Solution 1

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 "$(TargetPath)" "$(CentralisedBinariesFolderLocation)"" />
</Target>

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

Solution 2

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>
Share:
10,302

Related videos on Youtube

Author by

Frederik Vig

I work as an independent ASP.NET consultant in Oslo, Norway. My blog: http://www.frederikvig.com/

Updated on June 04, 2022

Comments

  • Frederik Vig over 1 year

    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:\Projects\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?

  • Frederik Vig over 13 years
    Think this is the way to go as well. I have one small problem though, $(TargetPath) returns nothing. Is there another variable I can use to get the deployment path?
  • Frederik Vig over 13 years
    Got it working with: <Exec Command="xcopy /Y /S /F /R $(MSBuildProjectDirectory)\Deployment $(CentralisedBinariesFolderLocation)" />. Not very elegant, but worked in my case. Please let me know if there is a better way! :)
  • Richard Dingwall
    Richard Dingwall over 11 years
    I tried this and it output to C:\Projects\xxx\$(Configuration)\_PublishedWebsites\MyApp.We‌​bsite.

Related