.NET Framework迁移至.NET Core:DependentUpon配置等效写法及报错处理
解决.NET Core迁移中Designer文件依赖配置的重复项问题
你碰到的问题根源在于.NET Core SDK和旧.NET Framework项目的默认行为差异:.NET Core SDK会自动扫描并包含项目目录下的所有编译文件,所以你手动添加<Compile Include="..."就会和SDK默认包含的条目重复,触发那个重复项报错。
正确的做法不需要重新Include文件,只需要修改已被默认包含的文件的元数据,把它关联到主文件上。把你写的代码改成下面这样就行:
<ItemGroup> <Compile Update="ServiceHost.Designer.cs"> <DependentUpon>ServiceHost.cs</DependentUpon> </Compile> </ItemGroup>
用**<Compile Update>代替<Compile Include>**,意思是"更新这个已存在的编译条目,添加DependentUpon关联",这样既不会产生重复项,又能让ServiceHost.Designer.cs在解决方案资源管理器里正确嵌套在ServiceHost.cs下面,和你之前在.NET Framework里的效果完全一致。
如果你真的需要完全手动控制所有编译文件(不推荐,除非有特殊场景),也可以在项目文件里添加这个配置来关闭默认的自动包含:
<PropertyGroup> <EnableDefaultCompileItems>false</EnableDefaultCompileItems> </PropertyGroup>
但这样你就得手动Include所有需要编译的文件,包括普通.cs、.Designer.cs等等,维护起来会麻烦很多,所以优先推荐用Update的方式。
内容的提问来源于stack exchange,提问作者Zeus82
相关产品推荐
相关产品推荐

