4

我正在尝试发布一个新的 SDK 风格的 .net 核心控制台应用程序项目,并且在发布一个使用“Microsoft.NET.Sdk”的项目时遇到了问题(请注意,它不是 Microsoft.NET.Sdk。网络,工作得很好)。

我做了什么:

  1. 我已将“Microsoft.NET.Sdk.Publish”添加到项目的 SDK 列表中:
<Project Sdk="Microsoft.NET.Sdk;Microsoft.NET.Sdk.Publish">

这是我的整个 project.csproj,有点超级简单:

<Project Sdk="Microsoft.NET.Sdk;Microsoft.NET.Sdk.Publish">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <OutputType>Exe</OutputType>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="CsvHelper">
      <Version>12.1.2</Version>
    </PackageReference>
  </ItemGroup>
</Project>
  1. 我使用下一个命令进行发布:
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe" MySolution.sln -maxCpuCount:1 -nodeReuse:True -target:Build -property:Configuration=Release -property:DeployOnBuild=true -property:PublishProfileFullPath="C:\Profiles\Publish.pubxml" -restore /bl

它创建了一个我在发布配置文件中指定为 publishUrl 的文件夹,但这个文件夹是空的。从我从二进制日志中可以看到, FileSystemPublish 目标只是被跳过了,因为它没有什么可复制的。

我发现缓解此问题的唯一方法是添加:

<_PublishProjectType>AspNetCore</_PublishProjectType>

对于我的项目,然后它运行良好,但这有点棘手,因为控制台应用程序与 AspNetCore 无关,并且暴露了一些 SDK 的内部结构。

关于如何在不依赖 SDK 内部的情况下解决它的任何想法?

4

0 回答 0