ilmerge.internalize.exclude.txt文件有什么作用?

时间:2018-09-11 11:02:38

标签: visual-studio-2017 csproj ilmerge

在进行代码审查时,我在csproj文件中发现了以下内容:

<ItemGroup>
    <Content Include="ilmerge.internalize.exclude.txt" />
</ItemGroup>

我的源代码目录中没有这样的文件。
虽然我在..packages..\content..\bin\Debug\中找到了文件
它们都包含一个名称空间(已从此问题中删除),后跟一个星号。 .. Web.Api.*

我想这源于ILMerge,但不能说出怎么做。

猜测我可以安全地删除ItemGroup元素。对吧?

修改

目前的理论是文件来自写得不好的依赖关系,该依赖关系利用ILMerge来公开自己的依赖关系。在进行一些重做期间,我们设法做到了相反,暴露了所有内容,甚至结转了文件ilmerge.internalize.exclude.txt

这个问题仍然没有答案-文件的作用。

1 个答案:

答案 0 :(得分:1)

当您为ILMerge指定/internalize:ilmerge.internalize.exclude.txt标志时生效-不管是什么类型public都变成internal,但ilmerge.internalize.exclude.txt中列出的除外。 Internalizing Assemblies with ILMerge

此文件允许您通过正则表达式设置类型/名称空间,而您希望将访问修饰符保持原样(公共)。也就是说,您可以在每一行中为类型指定完全限定名称,以将其排除在内部化之外(不国际化):

Namespace\.Typename
Namespace2\..*

不转义点也可以在正则表达式中使用,点表示任何字符。

无论您的项目是否以某种方式使用ILMerge,您都可能希望查看MSBuild输出日志。