当可执行项目引用不匹配的可执行文件时生成的错误

通常,可执行项目引用库项目,而不是其他可执行项目。 可执行项目还可以引用另一个可执行项目,以使用其中定义的 API。 一些开发人员希望从另一个可执行项目引用可执行项目,以便两个应用都放置在同一个输出文件夹中并且可从同一个输出文件夹中运行。 但是,如果自包含可执行文件引用非自包含可执行文件,则此方案不起作用,反之亦然。 由于应用程序主机的工作原理,无法启动这两个应用。 为了防止应用无法运行的情况,.NET SDK 5+ 会在检测到不匹配的可执行文件引用时生成编译时错误NETSDK1150并NETSDK1151。

更改描述

在以前的 .NET SDK 版本中,可以从非自包含可执行项目引用自包含可执行项目,而不会出现构建错误。 但是,这两个应用都无法运行。 从 .NET SDK 5 开始,如果可执行项目引用另一个可执行项目且 SelfContained 值不匹配,则会生成错误。

已引入的版本

.NET SDK 5.0.300

更改原因

引入了这些错误,以防止预期能够启动这两个应用程序但不能启动的情况。

如果引用的项目不需要从输出文件夹运行,则可以设置属性以避免此错误检查:

<ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>

有关详细信息,请参阅 ValidateExecutableReferencesMatchSelfContained

受影响的 API

没有。