我正在尝试发布一个新的 SDK 风格的 .net 核心控制台应用程序项目,并且在发布一个使用“Microsoft.NET.Sdk”的项目时遇到了问题(请注意,它不是 Microsoft.NET.Sdk。网络,工作得很好)。
我做了什么:
- 我已将“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>
- 我使用下一个命令进行发布:
"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 内部的情况下解决它的任何想法?