在视觉工作室项目中使用include \ **的缺点

时间:2015-04-07 23:03:34

标签: c# visual-studio visual-studio-2013

对于我工作过的大多数视觉工作室项目,我最终遇到了合并冲突,因为visual studio csproj文件包含大量用于包含文件的行,最后两个提交添加了一行到了同一个地方。 csproj文件。

<Content Include="Views\View1.cshtml" />
<Content Include="Views\Shared\View2.cshtml" />
<!-- snip a hundred more views -->

我们还使用Web部署包,并且在某些时候总是遇到有人将.css文件添加到文件系统,但忘记将其作为visual studio项目的一部分包含在内。这导致它不在部署包中,也从未部署到测试站点。

我最近发现可以做包含所有文件和子目录的通配符包括这样的内容。

<Content Include="Views\**" />
<Content Include="Styles\**" />

这有什么缺点吗?似乎它将解决合并问题和忘记在项目问题中包含文件。

1 个答案:

答案 0 :(得分:1)

潜在的缺点是在该子目录中包含不应包含的潜在敏感文件,或包括开发人员随机放入她的ViewsStyles文件夹中用于测试目的的其他文件,但从不预计实际上将它包括在项目中。当然,开发人员可能在物理文件夹位置但实际上并不想将其包含在项目中的其他临时代码文件也是如此。

为避免这种情况,您应该考虑以下语法:

<Content Include="Views\**\*.cshtml" />
<Content Include="Shared\**\*.cshtml" />
<Content Include="Shared\**\*.css" />

这将包括任何子目录中的所有文件。如果您实际上只想将这些文件包含在该目录中,请尝试

<Content Include="Views\*.cshtml" />
<Content Include="Shared\*.cshtml" />
<Content Include="Shared\*.css" />

等,只绘制真正应该在文件中的文件类型(并且仅在该子目录中)。如果您知道不想在该子目录中包含特定文件,也可以使用Exclude属性。

有关更多信息,请参阅: https://msdn.microsoft.com/en-us/library/ms171453.aspx#BKMK_Wildcards

还会想到其他一些建议:

  1. 使用整个开发团队遵循的命名约定可以避免一些问题,并确保为开发人员分配他们共同工作的明确任务。
  2. 当项目中的文件数量变得过于繁琐而无法处理时,可以通过将项目分开来缓解其中一些问题。所有这些模型和共享文件是否真的被该应用程序中的所有控制器使用?将一些控制器拆分成单独的项目,并将相关的模型/视图/共享资源与它们分开是否会更好?将自己的库中的共享资源与此特定项目分开是否会更好?