[英]Getting rid of the `My` namespace
我最近一直在開發一個Vb.Net
應用程序,我正在努力使它盡可能輕量級(即使二進制文件盡可能小)。
我已經做了所有瑣碎的事情,但是在用ILDasm
瀏覽二進制文件時,我注意到它有一個My namespace
,有很多方法,雖然我在我的程序中沒有使用任何這些。 似乎每個表單和其他方法都有默認的Get/Set
方法。
有沒有辦法擺脫那些?
或者,您能告訴我默認情況下捆綁在二進制文件中的方法的用例嗎?
PS :我想這不會對二進制大小產生巨大影響:我只是出於好奇而問這個問題; 為什么編譯器會在每個二進制文件中捆綁無用的方法? 也許我會知道這些方法實際上是在引擎蓋下使用的。
PPS :這是一個最小的例子:
Module Test
Sub Main()
End Sub
End Module
輸出是:
跟着這些步驟:
Show All Files
My Project
分支 Settings.settings
分支 Settings.designer.vb
My
命名空間 還有一個名為My.Resources
My
子命名空間隱藏在Resources.resx
分支下。
憤怒的頭疼之后......:
包含多少取決於_MYTYPE
定義的值。 這一切都記錄在MSDN中 ,我最初沒有找到它。
要刪除My命名空間中的大多數生成類型,您必須將_MYTYPE
定義設置為Empty
。 為此,您必須在文本編輯器中打開.vbproj文件(使用Visual Studio,您可以通過首先卸載項目而不是打開它來完成此操作)。
在第一個<PropertyGroup>
查找元素<MyType>
,並將其值更改為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指出的那樣,可以使用_MYTYPE
定義的其他值來配置My命名空間 。
此過程適用於Visual Studio 2012。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.