在进行代码审查时,我在csproj
文件中发现了以下内容:
<ItemGroup>
<Content Include="ilmerge.internalize.exclude.txt" />
</ItemGroup>
我的源代码目录中没有这样的文件。
虽然我在..packages..\content
和..\bin\Debug\
中找到了文件
它们都包含一个名称空间(已从此问题中删除),后跟一个星号。 .. Web.Api.*
我想这源于ILMerge,但不能说出怎么做。
我猜测我可以安全地删除ItemGroup
元素。对吧?
修改
目前的理论是文件来自写得不好的依赖关系,该依赖关系利用ILMerge来不公开自己的依赖关系。在进行一些重做期间,我们设法做到了相反,暴露了所有内容,甚至结转了文件ilmerge.internalize.exclude.txt
。
这个问题仍然没有答案-文件的作用。
答案 0 :(得分:1)
当您为ILMerge指定/internalize:ilmerge.internalize.exclude.txt
标志时生效-不管是什么类型public
都变成internal
,但ilmerge.internalize.exclude.txt
中列出的除外。 Internalizing Assemblies with ILMerge
此文件允许您通过正则表达式设置类型/名称空间,而您希望将访问修饰符保持原样(公共)。也就是说,您可以在每一行中为类型指定完全限定名称,以将其排除在内部化之外(不国际化):
Namespace\.Typename
Namespace2\..*
不转义点也可以在正则表达式中使用,点表示任何字符。
无论您的项目是否以某种方式使用ILMerge,您都可能希望查看MSBuild输出日志。