我一直在研究Microsoft.Extensions.FileProviders.Embedded
是如何工作的。我想知道它是如何能够参与到编译过程中来生成一个嵌入的xml文件的。
让我解释一下。
当我将Microsoft.Extensions.FileProviders.Embedded
Nuget包包含到我的项目中并添加
<PropertyGroup>
.... (removed)
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest>
</PropertyGroup>
编译后的程序集包含一个Microsoft.Extensions.FileProviders.Embedded.Manifest.xml
清单资源。
但是,当我不包含这个Nuget包,而是将GenerateEmbeddedFilesManifest
保留在项目文件中时,这个xml文件嵌入的资源是不生成的。
因此,这个Nuget包似乎参与了编译过程,它似乎能够读取项目文件,然后使用此信息生成嵌入式资源。
我的问题是理解.NET中允许这种情况发生的机制(因为我想复制这种行为)。
我在源代码中看不到任何这样做的东西。https://github.com/dotnet/aspnetcore/tree/main/src/FileProviders/Embedded/src
1条答案
按热度按时间disbfnqx1#
代码在这里:https://github.com/dotnet/aspnetcore/tree/main/src/FileProviders/Manifest.MSBuildTask
下面是创建清单XML文件的代码:https://github.com/dotnet/aspnetcore/blob/main/src/FileProviders/Manifest.MSBuildTask/src/GenerateEmbeddedResourcesManifest.cs
下面是实际触发该任务的目标文件:https://github.com/dotnet/aspnetcore/blob/main/src/FileProviders/Embedded/src/build/netstandard2.0/Microsoft.Extensions.FileProviders.Embedded.targets