.NET 5.0:在多项目解决方案中构建项目

Posted

技术标签:

【中文标题】.NET 5.0:在多项目解决方案中构建项目【英文标题】:.NET 5.0: Build a project in a multi-project solution 【发布时间】:2021-05-25 23:31:40 【问题描述】:

我的解决方案包含多个项目(例如,.NET 控制台应用程序、ASP.NET Web 应用程序、Python 脚本、单元测试等)。有时,我有兴趣在不编译其他项目的情况下构建特定项目。例如,构建控制台应用程序而不编译 Web 应用程序。

我尝试了以下方法:

dotnet build .\console_app.csproj

但是,这会构建解决方案中的所有项目。我错过了什么吗?

【问题讨论】:

它不应该构建所有东西——它应该只构建那个项目和它依赖的其他项目(传递性地)。例如,如果有另一个 console_app 不依赖(甚至是可传递的)当前已损坏的项目,那么构建 console_app.csproj 不应该因此而失败。 如果你认为你有一个反例,提供一个可重复的例子会很有帮助。 @JonSkeet 谢谢。我的控制台应用程序依赖于解决方案中的其他 .NET 项目,因此所有项目都是构建的。我相信我这边的依赖架构不好。 【参考方案1】:

选项 1:Temporarily 禁用这些项目

您可以暂时从构建配置中删除其他人,请参阅MSDN,

    暂时从活动解决方案中删除项目 配置在菜单栏,选择Build > Configuration Manager

    Project contexts table中,找到你想要的项目 从构建中排除。

    在项目的Build column 中,清除复选框。

    选择Close button,然后重建解决方案。您可能必须退出并重新启动 VS。


选项 2:创建新的构建配置

我喜欢/推荐这个,因为您不会丢失旧版本,只需单击按钮 its very easy to SWITCH between the two Build/Solution Configurations。

    创建排除项目的解决方案配置 在菜单栏上,选择Build > Configuration Manager

    Active solution configuration list 中,选择<New>

    Name box 中,输入解决方案配置的名称。

    在 Copy settings from 列表中,选择新配置要基于的解决方案配置(例如,Debug),然后选择 OK 按钮。

    Configuration Manager 对话框中,清除要排除的项目的“构建”列中的复选框,然后选择“关闭”按钮。

    Standard toolbar 上,验证新的解决方案配置是解决方案配置框中的活动配置。

    在菜单栏上,选择Build > Rebuild Solution

【讨论】:

以上是关于.NET 5.0:在多项目解决方案中构建项目的主要内容,如果未能解决你的问题,请参考以下文章

Gradle / javacard插件是否支持在多项目gradle构建中构建两个applet依赖项?

构建 .NET 5.0 项目 Azure DevOps 管道

如何在多项目构建中获取另一个项目的设置值

在 TeamCity 中构建特定 .NET Core 项目时引用传递依赖项的问题

在多项目环境中独立地对模块进行版本控制并压缩所有依赖项

如何在多模块 Gradle 项目中构建分发包?