如何配置MSBuild仅编译显式包含的.cs文件而非自动拾取?
如何阻止MSBuild自动拾取.cs文件,仅编译csproj中显式添加的文件?
需求:阻止MSBuild自动从项目目录中拾取.cs文件,仅编译显式添加到项目文件(csproj)中的文件。
当前项目配置:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> </PropertyGroup> ... <ItemGroup> <Compile Include="./Program.cs" /> </ItemGroup> </Project>
使用的dotnet版本:
$ dotnet --version 7.0.400
解决方案
在项目的<PropertyGroup>节点中添加<EnableDefaultCompileItems>false</EnableDefaultCompileItems>,即可禁用SDK默认的自动包含所有.cs文件的规则,之后MSBuild仅会编译你显式添加到<Compile>项中的文件。
修改后的完整项目配置示例:
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <!-- 关闭默认的.cs文件自动扫描包含逻辑 --> <EnableDefaultCompileItems>false</EnableDefaultCompileItems> </PropertyGroup> ... <ItemGroup> <Compile Include="./Program.cs" /> <!-- 可按需继续添加其他需要编译的.cs文件 --> </ItemGroup> </Project>
配置生效后,MSBuild会严格遵循你在csproj中声明的编译文件列表,不再自动扫描项目目录下的.cs文件进行编译。
内容的提问来源于stack exchange,提问作者sdgfsdh
相关产品推荐
相关产品推荐

