Visual Studio:如果编译为dll,则排除类

时间:2013-04-22 11:51:56

标签: c# visual-studio-2010 dll projects-and-solutions

我有一个DLL项目,我经常编译为.exe,以便我可以轻松地测试其中的类。一个类包含Main()方法,当我将其编译为.dll文件时,该方法无用。每当我将它编译为类库时,我想自动从项目中排除这个类。看起来我必须是第一个遇到这个问题的人之一,因为全能的谷歌似乎没有回答我的问题:我该怎么做?

2 个答案:

答案 0 :(得分:1)

我会认真考虑将单元测试视为不断地做这件事。即使单元测试没有正确实现,您只需将其用作中间调试器。我甚至会说单元测试项目是一个控制台应用程序的用户,用于调试代码,在获取访问权限方面它会让你的生活变得更轻松,将来如果你希望实现某种形式的单元测试你可以。

[TestMethod]
public class YourClassNameTests
{
  public T YourObject;
  [TestInitialize()]
  public void Initializer()
  {
    YourObject = new T();
  }
  [TestMethod()]
  public void YourMethodTest()
  {
    //Arrange
    YourObject.ReliantProperty = 1;
    //Act
    var objResult = YourObject.YourMethod();
    //Assert
    Assert.IsTrue(objResult == 1);
  }
}

答案 1 :(得分:0)

我有几个我能想到的解决方案:

1)使用条件编译器选项。例如,只有在调试

时才包含它

#if DEBUG

public void Main() {  
// Do Stuff  
}  

#ENDIF

2)创建Main方法internal,或将其移动到可以运行的测试项目中。然后直接使用它,或者确保测试DLL可以看到内部方法。

3)将Main方法移出一个完全不同的引用原始DLL的.exe。 (这与不使用测试框架的选项2类似。)