簡體   English   中英

擺脫`My`命名空間

[英]Getting rid of the `My` namespace

我最近一直在開發一個Vb.Net應用程序,我正在努力使它盡可能輕量級(即使二進制文件盡可能小)。

我已經做了所有瑣碎的事情,但是在用ILDasm瀏覽二進制文件時,我注意到它有一個My namespace ,有很多方法,雖然我在我的程序中沒有使用任何這些。 似乎每個表單和其他方法都有默認的Get/Set方法。

有沒有辦法擺脫那些?
或者,您能告訴我默認情況下捆綁在二進制文件中的方法的用例嗎?

PS :我想這不會對二進制大小產生巨大影響:我只是出於好奇而問這個問題; 為什么編譯器會在每個二進制文件中捆綁無用的方法? 也許我會知道這些方法實際上是在引擎蓋下使用的。

PPS :這是一個最小的例子:

Module Test
Sub Main()
End Sub
End Module

輸出是: ILDasm輸出

跟着這些步驟:

  1. 單擊解決方案資源管理器中的Show All Files
  2. 打開My Project分支
  3. 打開Settings.settings分支
  4. 打開Settings.designer.vb
  5. 根據需要編輯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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM