我最近一直在开发一个Vb.Net
应用程序,我正在努力使其尽可能轻量级(即使二进制文件尽可能小)。
我已经做了所有琐碎的事情,但是在用ILDasm
浏览二进制文件时,我注意到它有一个My namespace
,有很多方法,虽然我没有使用任何这些在我的程序中。似乎每个表单和其他方法都有默认的Get/Set
方法。
有没有办法摆脱那些?
或者,您能告诉我默认情况下捆绑在二进制文件中的方法的用例吗?
PS :我想这不会对二进制大小产生巨大影响:我只是出于好奇而问这个问题;为什么编译器会在每个二进制文件中捆绑无用的方法?也许我会知道这些方法实际上是在引擎盖下使用的。
PPS :这是一个最小的例子:
Module Test
Sub Main()
End Sub
End Module
输出是:
答案 0 :(得分:3)
请按照以下步骤操作:
Show All Files
My Project
分支Settings.settings
分支Settings.designer.vb
My
命名空间
还有一个名为My
的{{1}}子命名空间隐藏在My.Resources
分支下。
答案 1 :(得分:3)
愤怒的头疼......:
包含多少取决于_MYTYPE
定义的值。它全部记录在MSDN中,我最初没有找到它。
答案 2 :(得分:1)
要删除My命名空间中的大多数生成类型,您必须将_MYTYPE
定义设置为Empty
。为此,您必须在文本编辑器中打开.vbproj文件(使用Visual Studio,您可以通过首先卸载项目而不是打开它来完成此操作。)
在第一个<MyType>
中查找元素<PropertyGroup>
,并将其值更改为Empty
:
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{C6DC5A64-1E50-48B0-97A5-649D2D323E5E}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>Some.Component</RootNamespace>
<AssemblyName>Some.Component</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Empty</MyType>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
我还没有找到一种方法来删除Visual Studio生成的InternalXmlHelper。
正如Clément所指出的那样configure the My namespace可以使用_MYTYPE
定义的其他值。
此过程适用于Visual Studio 2012。