.NET Core项目升级 .NET 6.0 框架时,项目发布时报错:Microsoft.NET.Sdk\targets\Microsoft.NET.ConflictResolution.targets(112,5): error NETSDK1152: Found multiple publish output files with the same relative path:,本文主要.NET 6.0 项目发布,及出现上面错误信息的解决方法。

1、修改.csproj 文件

参考文档:https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/6.0/duplicate-files-in-output

以下构建属性添加到所有可发布 (*.Web) 项目的 *.csproj 文件中:

<PropertyGroup>
 <ErrorOnDuplicatePublishOutputFiles>false</ErrorOnDuplicatePublishOutputFiles>
</PropertyGroup>

2、排除compilerconfig.json和package.json

参考文档https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/6.0/duplicate-files-in-output

将以下行添加到解决方案的根目录中的common.props:

<Content Remove="compilerconfig.json;package.json"/>
<None Include="compilerconfig.json;package.json">
  <ExcludeFromSingleFile>true</ExcludeFromSingleFile>
  <CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>

3、 .NET 6.0 项目发布

1)构建项目

可以使用 Visual Studio、Visual Studio Code 或 .NET CLI 来构建项目。使用以下命令在项目目录中构建项目:

dotnet build

2)发布项目

使用 Visual Studio,右键单击项目,选择“发布”,然后按照向导的步骤配置发布设置。

或使用 .NET CLI 命令发布项目:

dotnet publish -c Release -o output_directory

3)启动程序

要启动 .NET 6.0 应用程序。可以使用以下命令在服务器上启动应用程序:

dotnet project_name.dll

4、.NET 6.0 项目独立发布

在 .NET 6 中,可以将应用程序发布为独立的自包含执行文件。这样的发布方式称为 "self-contained" 发布,它包括了应用程序的运行时和所有依赖项,以便在没有安装 .NET 的环境中运行应用程序。

1)发布项目为自包含执行文件命令:

dotnet publish -c Release -r runtime_identifier --self-contained true

说明:

参数

描述

-c Release

指定发布配置为 Release。

-r

指定目标运行时的标识符,根据目标操作系统选择标识符。

--self-contained true

指定生成自包含的执行文件。

若使用 Visual Studio,右键单击项目,选择“发布”,然后在向导发布设置中,部署模式(M) 选择 “独立” 即可。

2)运行程序

可以在目标计算机上运行生成的自包含执行文件,无需安装 .NET 运行时。运行命令如下:

./AppName

注意: .NET 6 应用程序就会以独立的方式运行,而不需要目标计算机上安装 .NET 运行时。

推荐文档