繁体   English   中英

是否可以使用Main方法在C#中执行类似于Java中的任意类?

[英]Is it possible to execute an arbitrary class in C# with a Main method, similar to that in Java?

我最近不得不迁移到C#世界。 来自Java领域,我可以向任何类添加一个public static void main(String[] args)方法,然后选择要从Eclipse / Netbeans中运行该类以获取想要快速测试的任何代码/逻辑。

C#.Net / Visual Studio中是否有相同的功能? 我尝试过这样做,最好的办法是通过csc.exe在命令提示符下执行它。 但是,由于某种原因,它抱怨找不到相关的DLL-似乎期望完全隔离地运行该类,而无需依赖“外部代码”(即,该类所在的VS项目/解决方案中的代码) 。

使用此功能的原因 :所有项目文件都标记为类库,有时我只想检查一组特定的方法/数据/逻辑是否可以在当前代码库中正常工作。 在Java中,我会在main方法中快速编写它,并执行该类以查看其运行方式,然后再将其提交给版本控制。 但是,似乎没有简单的方法可以通过csc.exe正确处理所有依赖项来触发“ my class”的执行

当前解决方案:将此测试代码添加到单元测试项目中,然后选择执行该特定的“测试”,以检查该想法是否运行良好(它可能会触发数据库调用或Web服务类等,而并非纯粹是逻辑上的计算流程)。 这似乎工作正常,并且是我当前的处理方式。 我想知道Main方法是否甚至可能/推荐。

问题 :使用C#/ VS甚至可以做到吗?还是不建议这样做?

更新:我不能仅添加控制台项目来实现此目的,因为添加项目由源代码管理团队严格控制。 因此, Main方法'hack'的问题是快速而肮脏的检查/测试。

您的项目类型必须是“控制台应用程序”,才能“识别” Program.Main方法,而不是“类库”。 目的是使类库成为功能的封装组,只能由设置为允许用户输入的项目访问。 这些可以是控制台应用程序,Web项目(MVC / API)或桌面(WPF)。

如果您只想对类库项目中的代码执行测试,则还可以创建一个单元测试项目,添加一个引用,并针对要实现的功能执行非常明确的测试。

您可以通过在您喜欢的文本编辑器中检查.csproj文件来找出不同项目类型之间的差异。

在Visual Studio中,转到“ New->Project然后选择“ Console Application (在VS2015中的Windows \\ Classic Desktop中)。 这为您提供了具有以下功能的基本控制台应用程序:

static void Main(string[] args)
{
}

设置并准备就绪。 但是对于简单地尝试代码,您可能会发现这很麻烦(创建一个新项目和文件夹只是为了测试代码),而对于测试代码(不依赖现有库),则可以使用.NET Fiddle之类的方法。

https://dotnetfiddle.net/

您可以在此处快速创建和测试代码,并通过浏览器运行它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM