摆脱`My`命名空间

时间:2011-04-25 18:25:14

标签: vb.net binary compilation

我最近一直在开发一个Vb.Net应用程序,我正在努力使其尽可能轻量级(即使二进制文件尽可能小)。

我已经做了所有琐碎的事情,但是在用ILDasm浏览二进制文件时,我注意到它有一个My namespace,有很多方法,虽然我没有使用任何这些在我的程序中。似乎每个表单和其他方法都有默认的Get/Set方法。

有没有办法摆脱那些?
或者,您能告诉我默认情况下捆绑在二进制文件中的方法的用例吗?

PS :我想这不会对二进制大小产生巨大影响:我只是出于好奇而问这个问题;为什么编译器会在每个二进制文件中捆绑无用的方法?也许我会知道这些方法实际上是在引擎盖下使用的。

PPS :这是一个最小的例子:

Module Test
Sub Main()
End Sub
End Module

输出是: ILDasm output

3 个答案:

答案 0 :(得分:3)

请按照以下步骤操作:

  1. 点击解决方案资源管理器中的Show All Files
  2. 打开My Project分支
  3. 打开Settings.settings分支
  4. 打开Settings.designer.vb
  5. 根据需要编辑My命名空间
  6. image

    还有一个名为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。