Albacore / albacore

Albacore is a professional quality suite of Rake tasks for building .NET or Mono based systems.
www.albacorebuild.net
221 stars 64 forks source link

Project.fallback_output_path doesn't apply common msbuild properties to the found text #220

Open baronfel opened 7 years ago

baronfel commented 7 years ago

I like to consolidate as much as possible the variation points in my project files on the configuration, so I tend to have a project file that looks like this:

<PropertyGroup>
    <AssemblyName>WHATEVER_THE_NAME_IS</AssemblyName>
    <RootNamespace>$(AssemblyName)</RootNamespace>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <ProjectGuid>blah-blah-blah</ProjectGuid>
    <OutputType>Library</OutputType>
    <OutputPath>bin\$(Configuration)</OutputPath>
    ...
    <DocumentationFile>bin\$(Configuration)\$(AssemblyName).xml</DocumentationFile>
  </PropertyGroup>

When Project::output_dll is called, it correctly locates the fallback_output_path of bin\$(Configuration), but it doesn't apply any existing (or even just a subset of common) MSBuild properties to try and resolve that path. I can see where this might go off the rails, but at the same time I'd like to use well-known properties like Configuration and Platform to make paths and reduce duplication.

haf commented 7 years ago

Sure; PR for the 'common' properties inside $(...) and we can have a whitelist that gets interpolated. But remember that MsBuild is rather close to turing complete (or maybe it is; not sure), so it's a fool's errand to support all and every evaluation it's capable of without implementing the engine itself.