将 C# 控制台应用程序转换为 DLL

Posted

技术标签:

【中文标题】将 C# 控制台应用程序转换为 DLL【英文标题】:Converting a C# Console App to a DLL 【发布时间】:2014-09-10 10:44:08 【问题描述】:

我正在将 Betfair API 从 SOAP 重写为 JSON,并且我已经开始使用以前的控制台 APP 作为控制台 APP,然后从任务调度程序或 win 服务中调用它。

但是现在我被要求使用代码完成各种不同的工作,我不想为每个工作编写控制台应用程序(不同的网站需要价格、下注等)

新代码库比旧代码库大得多,我可以将 4 个文件从旧系统复制到 DLL 应用程序中,然后创建各种控制台应用程序/服务来实现 DLL - 但是因为它是 40+如果可能,我不想要复制粘贴作业的文件。

有没有一种方法可以使用 VS 中的一些工具或命令轻松地将现有控制台项目转换为类/DLL 项目?

我希望能够创建简单的应用程序

BetfairBOT myBOT = new BetfairBOT()
myBOT.RunGetPrices();

BetfairBOT myBOT = new BetfairBOT()
myBOT.RunPlaceBets();

例如 2/3 行代码来实现注册到我的应用程序的 DLL。

所以我可以不用复制和粘贴。

我正在使用 VS 2012、.NET 4.5(或 4.0,如果我需要取决于服务器)、Windows 8.1

任何帮助将不胜感激。

【问题讨论】:

在解决方案资源管理器中选择项目...右键单击并选择属性...选择应用程序选项卡...输出类型下拉列表中列出了什么?它甚至启用了吗? 嗨,是的,控制台应用程序已列出。还有 Windows 应用程序和类库。如果我只是把它改成类库就可以了。然后我只需要删除带有 main(string[] args) 等的 Program 类,当编译为 EXE 时它将是一个 DLL? 不确定VS2012会做什么...备份并试一试...afaik它只会更改输出类型定义(作为GUID存储在.csproj XML文件中)和一些模板基础知识...作为一个类库,它应该编译为 dll ..而不是 exe 嗯? 哈哈,是的,对不起。只是习惯于 Windows 应用程序和控制台应用程序。如果这不起作用是创建一个新项目然后手动复制一个又一个类的唯一方法,或者有没有办法自动化它?工具等 我认为您可以更改输出类型,但即使您不能,如果您的控制台应用程序是使用内部业务类编写的,您只需将文件拖放到解决方案资源管理器中并修复命名空间。 【参考方案1】:

这个答案来自here。虽然它使用 winforms 而不是控制台应用程序,但我认为您将能够使用它。

创建 DLL 的步骤

第 1 步:- 文件->新建->项目->Visual C# 项目->类库。选择您的项目名称和适当的目录单击确定

单击“确定”按钮后,解决方案资源管理器会添加一个 C# 类“Class1.cs”。在这个类中我们可以编写我们的代码。

当我们双击 Class1.cs 时,我们会看到一个命名空间 CreatingDLL。我们将在我们的项目中使用这个命名空间来访问这个类库。

第 2 步:- 在 Class1.cs 中,我们创建一个名为“sum”的方法,该方法接受两个整数值并将 sum 返回给女巫方法传递的数字。

using System;

namespace CreatingDLL

    public class Class1
    
        /// <summary>
        /// sum is method that take two integer value and return that sum
        /// </summary>
        /// <param name="x"></param>
        /// <param name="y"></param>
        /// <returns></returns>
        public int sum(int x, int y)
        
            return x + y;
        
    

第 3 步:- 现在构建应用程序并查看我们项目的 bin\debug 目录。 “CreatingDLL.dll”已创建。

现在我们创建另一个应用程序并使用这个 DLL (CreatingDLL.dll) 引用来访问 DLL 的方法。 访问创建的 DLL 的步骤

第 4 步:- 文件->新建->项目->Visual C# 项目->Windows 窗体应用程序。

第 5 步:- 设计的窗口形式如下图。

第 6 步:- 添加我们在几分钟前创建的 DLL (CreatingDLL) 的引用。

添加DLL的引用后,会出现如下窗口。

第 7 步:- 在单击 Windows 窗体应用程序的按钮时编写代码。在创建对象和添加DLL的方法之前,在项目中添加命名空间CreatedDLL,如下代码。

using System;
using System.Windows.Forms;

using CreatingDLL;

namespace AccessingDLL

    public partial class Form1 : Form
    
        public Form1()
        
            InitializeComponent();
        

        private void btnAdd_Click(object sender, EventArgs e)
        
            Class1 c1 = new Class1();
            try
            
                txtResult.Text = Convert.ToString(c1.sum(Convert.ToInt32(txtNumber1.Text), Convert.ToInt32(txtNumber2.Text)));
            
            catch(Exception ex)
            
                MessageBox.Show(ex.Message);
            
        
    

第 8 步:- 现在构建应用程序并执行项目并查看输出。

编辑:要将应用程序更改为库,请执行以下步骤

首先,双击解决方案资源管理器窗口中的属性。

然后,在打开的页面上,将输出类型从 Console Application 更改为 Class Library

【讨论】:

嗨,斯科特,我明天有时间会试试这个。不过看起来不错,为所有的截图欢呼。谢谢 顺便说一句,你从来没有告诉我如何在没有复制和粘贴工作的情况下将 200 多个课程复制到这个新项目中?我真的不想手动做。我可以将整个项目复制到新的类项目中吗 @MonkeyMagix 我编辑了我的答案,向您展示如何将应用程序更改为库。 因此,只需进行一项更改即可将所有文件(或重新分配)复制到新应用程序中 - 很酷。谢谢 @MonkeyMagix 如果答案对您有用,请点击答案旁边的复选标记。

以上是关于将 C# 控制台应用程序转换为 DLL的主要内容,如果未能解决你的问题,请参考以下文章

将非托管 dll 的 Delphi 代码转换为 C#

如何将 C++ 非托管 DLL 转换为 C#

C++ 将字符串传递到 C# dll

C#将集合和Json格式互相转换的几种方式

与 C# 控制台应用程序互操作 C++ (DLL) 的问题

如何正确地将这些转换为 c#,marshall,以便我可以将这些结构传递给 DLL (c++)?