.net core 项目如何知道构建时要包含哪些文件

Posted

技术标签:

【中文标题】.net core 项目如何知道构建时要包含哪些文件【英文标题】:How does .net core project know which files to include while building 【发布时间】:2018-10-21 16:32:17 【问题描述】:

我观察到 .Net 标准和 .Net Core 中的 .csproj 文件存在差异。 在 .Net 项目中,所有文件 (.cs,.js etc) 都包含在每个项目的 .csproj 文件中。例如:

<Compile Include="ViewModel\LiveViewViewModel.cs" />
<Compile Include="ViewModel\RegistrationViewModel.cs" />
<Compile Include="Views\LiveView.xaml.cs">
  <DependentUpon>LiveView.xaml</DependentUpon>
</Compile>

但如果我看到新的 .Net Core .csproj 文件,则没有提及任何 .cs/.js 或任何文件。 我很想了解 .net 核心项目在编译时如何包含文件。

【问题讨论】:

【参考方案1】:

它们现在来自通过 Microsoft.NET.Sdk MSBuild sdk 导入的 msbuild 定义文件,并使用通配符根据项目文件的位置指定搜索模式。

如果你写了(简化的)等价物

<Compile Include="**\*.cs" />

到项目文件中,msbulid 已经支持了很长时间,但与 Visual Studio 工具不兼容。如果您在属性窗口中排除某些文件或更改元数据,新项目系统可以更好地处理通配符,然后添加适当的&lt;Compile Remove".."/&gt;Update=".." 定义。

默认项目的源代码位于here,以及一些由 web-sdk 为 ASP.NET Core 项目带来的额外定义here。

【讨论】:

以上是关于.net core 项目如何知道构建时要包含哪些文件的主要内容,如果未能解决你的问题,请参考以下文章

利用eclips创建一个maven项目

Flash Builder 如何确定要包含哪些 sdk 库?

发布软件时要随二进制文件一起提供哪些文件?

我如何知道哪些选项从 CMake 传递给 GCC?

Maven构建的Spring项目需要哪些依赖?

我如何知道应该为 Mac 沙盒应用程序添加哪些权利项目?