【发布时间】:2012-03-22 11:45:51
【问题描述】:
如果之前有人问过这个问题,或者现在可以回答,我深表歉意。
我正在处理一个大型代码库(其中大部分是在我开始工作之前由另一位软件工程师编写的,标准事务)。我在这个项目中添加了相当多的代码,其中大部分都将现有方法包装到对象/库中以便于重用。通过包装,我的意思是我已将它们复制到一个新的对象/库中,对它们进行编辑以使它们作为独立对象或库(如果适用)工作,并在原始代码库中的适当位置调用/实例化它们。
例如,我没有将提供某个一次性函数的大型方法 (foo) 包含在主 exe 的一个 .cs 文件中,而是将其包装在它自己的类中并将其分开,以便它可以(理论上)用于其他项目或解决方案的不同部分。
IE 从这里开始:
/* somewhere in Main */
void Main ()
{
...
foo (arg1, arg2, arg3)
...
}
foo (arg1, arg2, arg3)
{
//some massive functionality
}
到这里:
/* somewhere in Main or any other part of the code base */
Foo myFoo = new Foo (arg1, arg2, arg3);
myFoo.DoSomething();
今天,我开始查看代码库并注释掉所有旧方法(我已经包装到对象/库中的方法),以找出我可以从原始代码中删除哪些方法根据。我正在使用版本控制软件,我一次做几个,然后重新编译并执行一些测试以检查我没有破坏任何东西。
我的问题是: 当我编译时,C# 编译器(使用 3.5 版)是否足够智能,不会包含永远不会被调用、实例化或使用的方法/函数/对象/库?
我仍将整理/清理现已弃用的方法/函数,但我只是想知道编译器是否可以生成不包含这些方法/函数的输出。
TL;DR:如果我有以下 Main.cs
/*using statements here*/
public void Main ()
{
foo();
}
foo ()
{
/*Some commands*/
}
bar()
{
/*Never called*/
}
我的编译输出是否包含对 bar 的任何引用?
【问题讨论】:
标签: .net visual-studio-2008 compilation c#-3.0