我添加了两个同名的部分类:
public partial class SomePartial
{
}
现在我有两个单独的文件。
我想让它们在项目中显示为单个项目,可以像在 WebForms 项目中一样展开,其中您有
Form.cs
并且有 Form.Designer.cs
。
您可以通过手动编辑 .csproj 文件来完成此操作。
右键单击该项目并选择“卸载项目”,然后再次右键单击该项目并选择“编辑.csproj”。
这是一个 .xml 文件,描述您的项目及其依赖项。您需要找到描述您的部分类的文件的条目,例如
<ItemGroup>
<Compile Include="MyPartialClass.cs" />
<Compile Include="MyPartialClass.Extension.cs" />
</ItemGroup>
现在您可以通过添加
DependendUpon
子标签将一个项目设置为另一个项目的子项目:
<ItemGroup>
<Compile Include="MyPartialClass.cs" />
<Compile Include="MyPartialClass.Extension.cs">
<DependentUpon>MyPartialClass.cs</DependentUpon>
</Compile>
</ItemGroup>
保存文件,然后重新加载项目。
恕我直言,在同一个文件中拥有部分类没有多大意义。部分类的主要目标是允许多个人使用同一类,如果有人从您的代码存储库中检出此文件,则此功能将消失。 另一个目标是使手动代码远离自动生成的代码,这样在重新生成时它就不会丢失。 也就是说,您可以使用代码区域来实现您想要的。
#region Partial 1
// Code here
#endregion
#region Partial 2
// Code here
#endregion
在
dotnet core
中,将 NETSDK1022
项目添加到 Compile
时,您可能会收到错误 csproj
。
要解决此问题,例如必须先删除源文件,然后再添加。
<ItemGroup>
<Compile Remove="MyPartialClass.cs" />
<Compile Remove="MyPartialClass.Extension.cs"/>
<Compile Include="MyPartialClass.cs" />
<Compile Include="MyPartialClass.Extension.cs">
<DependentUpon>MyPartialClass.cs</DependentUpon>
</Compile>
</ItemGroup>
错误
NETSDK1022
显示,因为在dotnet core
中,项目目录中的所有源文件都包含在默认情况下进行编译,然后尝试添加Compile
项会导致源文件重复。但在 .Net Framework
中并没有抛出错误,因为所有源文件都必须显式列出/包含在 csproj
中。