2011-04-25 125 views
4

我最近開發Vb.Net應用程序,和我想要使它一樣輕巧地(即使二進制文件儘可能小)。擺脫`My`命名空間

我已經完成了所有微不足道的事情,但在使用ILDasm瀏覽二進制文件時,我注意到它有一個My namespace,有很多方法,但我沒有在我的程序中使用任何這些方法。它似乎有默認Get/Set方法每一種形式,和其他方法。

有擺脫那些方式?
或者,你能告訴我一個用例默認二進制捆綁的方法是什麼?

PS:我想這不會使二進制大小的巨大差異:我只是問這是出於好奇;爲什麼編譯器會在每個二進制文件中捆綁無用的方法?也許我會知道這些方法實際上是在引擎蓋下的某個地方使用的。

PPS:這裏有一個小例子:

Module Test 
Sub Main() 
End Sub 
End Module 

輸出是: ILDasm output

+1

的'My'命名空間是非常有用的,但是如果你想刪除所有的方法,你不能只打「顯示所有文件」,瀏覽周圍的'我的'命名空間(可以訪問!你只需要找到它)並刪除它?除非你確定你不打算使用它,否則刪除它是一個壞主意,因爲你可以在你的程序中使用'My.Settings'和命名空間的其他部分,並且我可以在我的許多程序中使用它。 – Cyclone 2011-04-25 18:27:29

+0

似乎有一個最小值是由編譯器直接添加的。請參閱我的編輯=) – 2011-04-25 20:50:55

+0

編輯說明:編譯命令行是'vbc minimal.vb',假設最小代碼塊保存爲'minimal.vb' – 2011-04-25 20:54:25

回答

3

大怒頭刮後...:

包含多少依賴於_MYTYPE的價值定義。它在MSDN所有記錄,我未能在第一次找到它。

+1

總節省:6kB! =) – 2011-04-25 21:20:49

3

按照下列步驟操作:在解決方案資源管理

  1. 點擊Show All Files
  2. 打開My Project分支
  3. 打開Settings.settings分支
  4. 打開Settings.designer.vb
  5. 編輯My命名空間,如你所願

image

有一個叫附加My子命名空間是隱藏在Resources.resx分支下。

+1

但是,我想指出,刪除或編輯「My命名空間並不是一個好主意,正如我在上面的評論中提到的那樣,您可能會發現在稍後的項目中需要一些功能。 – Cyclone 2011-04-25 18:42:49

+0

嗯......我已經擺脫了'Settings.settings'和'Resources.resx'; vb編譯器仍然捆綁方法:/ – 2011-04-25 20:47:24

+0

@Clément嘗試清空命名空間,而不是完全清除它。 – Cyclone 2011-04-25 20:50:53

1

爲了移除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指出有可能configure the My namespace使用其他值的_MYTYPE定義。

此過程將在Visual Studio 2012年工作