使用 dotnet core publish 命令发布 angular

publishing angular with dotnet core publish command

我目前的项目结构是

   solution dir
      -- clientDir
      -- serverDir

我正在尝试在发布服务器项目时发布 clientdir,下面是我对 csproj 文件所做的更改

<PropertyGroup>
    <SpaRoot>$(SolutionDir)ClientDir\</SpaRoot>
</PropertyGroup>

然后添加了一个目标

  <Target Name="PublishRunWebpack" AfterTargets="ComputeFilesToPublish">
    <ItemGroup>
      <DistFiles Include="$(SpaRoot)dist\myapp\**" />
      <ResolvedFileToPublish Include="@(DistFiles->'%(FullPath)')" Exclude="@(ResolvedFileToPublish)">
        <RelativePath>%(DistFiles.Identity)</RelativePath>
        <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
      </ResolvedFileToPublish>
    </ItemGroup>
  </Target>

但是我得到了错误

Unable to copy file "C:...\ClientDir\dist\myapp\scripts.js.map" to to "C:\PublishDir\PubTmp\Out\C:...\ClientDir\dist\myapp\scripts.js.map". The given path's format is not supported. ICollect.Public.WebApi

正在将源文件的完整路径附加到发布路径...

我解决了这个问题,多亏了这个link

https://docs.microsoft.com/en-us/visualstudio/msbuild/msbuild-well-known-item-metadata?view=vs-2019

将相对路径更改为

    <RelativePath>%(DistFiles.RecursiveDir)%(DistFiles.Filename)%(Extension)</RelativePath>