如何在dotnet build时排除解决方案中的VSIX项目?
让VSIX项目在dotnet build时自动跳过构建的配置方案
你可以直接在VSIX项目的.csproj文件中添加条件配置,无需拆分解决方案或额外CLI参数,就能实现仅在Visual Studio/传统MSBuild环境下构建该项目,而在dotnet build时自动跳过。
方法1:通过DisableProjectBuild属性控制(推荐)
在VSIX项目的.csproj文件里,添加如下属性组:
<PropertyGroup> <!-- 当使用dotnet CLI构建时,禁用当前项目的构建流程 --> <DisableProjectBuild Condition="'$(MSBuildRuntimeType)' == 'Core'">true</DisableProjectBuild> </PropertyGroup>
- 原理:
$(MSBuildRuntimeType)在dotnet build环境下值为Core,此时DisableProjectBuild设为true,MSBuild会加载项目但跳过构建步骤。 - 优势:不影响Visual Studio内的正常开发构建,也不需要修改项目的根节点配置,更直观灵活。
方法2:通过项目节点的Condition属性跳过加载
修改VSIX项目.csproj的根<Project>节点,添加条件判断:
<Project Sdk="Microsoft.VsSDK" Condition="'$(BuildingInsideVisualStudio)' == 'true' OR '$(MSBuildRuntimeType)' != 'Core'">
- 原理:仅当在Visual Studio内构建(
BuildingInsideVisualStudio为true),或使用传统MSBuild而非dotnet CLI时,才加载并构建该项目。 - 特点:
dotnet build时MSBuild会完全跳过该项目的加载,适合希望彻底排除项目参与CLI构建流程的场景。
两种方式都能解决你遇到的VSSDK构建报错问题,同时保留VSIX项目在开发环境中的实用性。
内容的提问来源于stack exchange,提问作者Voo
相关产品推荐
相关产品推荐

