MSBuild .NET Core 3.1 application - Set PublishDir value in csproj

833 Views Asked by At

I struggle to set the PublishDir value in the new .net core 3.1 csproj format. In the old csproj format I was able to set the value like this:

<PropertyGroup>
<PublishDir>..\test\path</PublishDir>

I was even able to use a Condition attribute in the PublishDir element to use different values depending on the build configuration.

Now with the new csproj I tried the same, but the PublishDir is still set to something like: bin/Release/netcoreapp3.1/win-x64/app.publish. Where does this directory come from?

Only when I add the parameter via msbuild call with /p:PublishDir="..\test\path" the application gets published in the appropriate directory.

Is there anything else I need to take into consideration? Do I need to set the value after a specific target, like PrepareForPublish?

1

There are 1 best solutions below

0
On BEST ANSWER

This is the solution I had mentioned in the comment before:

<Target Name="CustomPublishTarget" BeforeTargets="PrepareForPublish">
  <ItemGroup>
      <PublishDir Include="$(PublishDir)" />
  </ItemGroup>

  <PropertyGroup>
      <PublishDir>..\test\path</PublishDir>
  </PropertyGroup>
</Target>