C#项目文件-为什么它不代表我的项目中的内容?

时间:2018-07-10 14:20:39

标签: c# xamarin xamarin.forms

从PCL转换为.NET共享后,我试图了解.csproj文件的内容。这是一个示例和一些问题:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Xamarin.Forms" Version="3.1.0.583944" />
    <PackageReference Include="sqlite-net-pcl" Version="1.4.118" />
    <PackageReference Include="Syncfusion.Xamarin.SfChart" Version="16.2.0.42" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Views\" />
    <Folder Include="Views\Settings\Pages\" />
    <Folder Include="Views\Home\PopUp\" />
    <Folder Include="Views\Help\Cards\" />
  </ItemGroup>

有人可以向我解释为什么即使我的项目中有更多文件夹,上方还是只显示某些文件夹

  <ItemGroup>
    <EmbeddedResource Remove="Views\Cards\Category\CategoriesPage.xaml" />
    <EmbeddedResource Remove="Views\Cards\Templates\LinkTextCell.xaml" />
    <EmbeddedResource Remove="Views\Cards\Templates\SwitchViewCell.xaml" />
    <EmbeddedResource Remove="Views\Home\Dictionary.xaml" />
  </ItemGroup>

有人可以解释所有这些“删除”行的含义吗?

  <ItemGroup>
    <None Include="Views\Cards\Cards.xaml" />
    <None Include="Views\Cards\Category\CategoriesPage.xaml" />
    <None Include="Views\Cards\Category\CategoryViewCell.xaml" />
    <None Include="Views\Cards\Templates\LinkTextCell.xaml" />
    <None Include="Views\Cards\Templates\SwitchViewCell.xaml" />
    <None Include="Views\MainPage.xaml" />
    <None Include="Views\MainPage.xaml" />
    <None Include="Views\MainPage.xaml" />
    <None Include="Views\MainPage.xaml" />
  </ItemGroup>

有人可以解释为什么MainPage可能出现四次吗?是否需要不止一次,完全需要吗?有很多文件不在“包含”列表中吗?如果只有一半,那为什么呢?

  <ItemGroup>
    <Compile Update="Views\MainPage.xaml.cs">
      <DependentUpon>MainPage.xaml</DependentUpon>
    </Compile>
    <Compile Update="Views\Home\HomePage.xaml.cs">
      <DependentUpon>HomePage.xaml</DependentUpon>
    </Compile>
    <Compile Update="Views\Cards\Category\CategoryViewCell.xaml.cs">
      <DependentUpon>CategoryViewCell.xaml</DependentUpon>
    </Compile>
  </ItemGroup>
</Project> 

我知道有些观点依赖于其他观点,但我有很多观点,但这只显示了三种观点之间的关系。为什么会这样?

我是否可以从项目文件中删除所有这些条目,因为项目文件与项目中的文件夹/文件之间似乎没有太多相似之处?

1 个答案:

答案 0 :(得分:14)

新的.csproj格式进行了一些基本更改以简化文件。现在默认情况下包括所有.cs(如果正在执行VB.Net,则包含.vb)文件。 See here以获得更多信息。

文件之所以明确包含一些文件和文件夹,是因为您可能在某个时候编辑了文件属性。

Remove行允许文件成为项目结构的一部分,但不能自动编译或嵌入。

至于MainPage.xaml为什么出现多次,我不知道。 Visual Studio中的错误已添加它们,或者源控件合并冲突。无论哪种方式,这些重复的行都是多余的,可以删除。