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

2023-11-22

我正在将 Betfair API 从 SOAP 重写为 JSON,并且按照之前的方式开始,将其作为控制台应用程序,然后从任务调度程序或 win 服务中调用。

然而现在我被要求用代码做各种不同的工作,我不想为每项工作编写一个控制台应用程序(不同的网站想要价格、下注等)

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

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

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

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

or

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

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

所以无需复制和粘贴我就可以做到这一点。

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

任何帮助将非常感激。


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

创建DLL的步骤

Step 1:- 文件->新建->项目->Visual C# 项目->类库。选择您的项目名称和适当的目录,然后单击“确定”

Creating C# Class Library (DLL) Using Visual Studio .NET

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

Creating C# Class Library (DLL) Using Visual Studio .NET

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

Creating C# Class Library (DLL) Using Visual Studio .NET

Step 2:- 在 Class1.cs 中,我们创建一个名为“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;
        }
    }
}

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

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

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

Step 5:- 设计的窗口形式如下图所示。

Creating C# Class Library (DLL) Using Visual Studio .NET

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

Creating C# Class Library (DLL) Using Visual Studio .NET

Creating C# Class Library (DLL) Using Visual Studio .NET

添加DLL的引用后,将出现以下窗口。

Creating C# Class Library (DLL) Using Visual Studio .NET

Step 7:- 在 Windows 窗体应用程序的按钮单击上编写代码。在创建对象和创建 Add 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);
            }
        }
    }
}

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

Creating C# Class Library (DLL) Using Visual Studio .NET

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

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

Double Click

然后,在打开的页面上,将输出类型从控制台应用程序 to 类库

Change output type

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 C# 控制台应用程序转换为 DLL 的相关文章

  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • C# 列表通用扩展方法与非通用扩展方法

    这是一个简单的问题 我希望 集合类中有通用和非通用方法 例如List
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 使用.Net/C# 计算集合的频率分布

    是否有一种快速 简单的方法来使用 Linq 或其他方式计算 Net 集合的频率分布 例如 任意长的 List 包含许多重复项 遍历列表并计算 跟踪重复次数的巧妙方法是什么 查找列表中重复项的最简单方法是将其分组 如下所示 var dups
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 如何在 Linq to SQL 中使用distinct 和 group by

    我正在尝试将以下 sql 转换为 Linq 2 SQL select groupId count distinct userId from processroundissueinstance group by groupId 这是我的代码
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • 现代编译器是否优化乘以 1 和 -1

    如果我写 template

随机推荐

  • 如何在 Swift 中取消本地通知触发器

    我有一个触发器向用户显示通知 let content UNMutableNotificationContent content title Title content body Body content sound UNNotificati
  • 在 Android 版本 42 或更高版本的 Firefox 中安装未签名的 XPI

    我正在尝试重新开发一个旧项目 即我正在开发的 Android 版 Firefox 扩展 我有两部手机 一部是私人的 一部是工作的 我的 Firefox 是旧版本 40 它的工作原理与以前完全相同 但是 在我工作的手机的升级版本 Firefo
  • Qt 不加载 JPG ,仅加载 PNG

    我与同事在 Windows 7 64 位版本 Visual Studio 2008 上处理同一个项目 他们加载 JPG 并开始工作 通过 QPixmap 和样式表 并且有效 但对我来说 我只能使用 PNG 其余的根本不起作用 我还尝试更改环
  • Cocoa TextView 中的语法突出显示?经验?建议?有想法吗? [复制]

    这个问题在这里已经有答案了 可能的重复 Cocoa 应用程序的语法着色 我对 感兴趣语法高亮 in a Cocoa文本视图 我找到了几个资源 灵活接近 via a flex模式匹配textStorageDidProcessEditing i
  • Ruby 数组初始化 [重复]

    这个问题在这里已经有答案了 我需要知道这两个语句之间的技术差异以及为什么它会这样 arr Array new 3 abc gt abc abc abc arr last upcase gt ABC arr gt ABC ABC ABC wh
  • 如何永久忽略 ActiveRecord::Base 类中的数据库列?

    我有一个遗留数据库 我正在尝试使用 Rails 对其进行建模 其中一个表有一列名为attributes 我认为这是 Rails 保留的名称 下面是该表的 SQL CREATE TABLE album id int 11 NOT NULL a
  • 如何以编程方式在 Windows 7 或 Windows Server 2008 上创建 Windows 用户帐户?

    我一直在尝试在 Windows 7 计算机上创建新的本地用户帐户 我使用了 System DirectoryServices DirectoryEntry 类 如here 但它似乎不起作用 这是文章中的代码 static void Main
  • ReactJs this.props.router 未定义

    你好 我正在学习 React js 我遇到了一个问题 当我尝试使用 React Router 更改回主页时 出现以下错误 未捕获的类型错误 无法读取未定义的属性 push 这是我的代码 您可以看到我正在调用导航函数 我的 client js
  • 为什么我的教授使用两个 getchar();? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 为什么我的教授使用两个 getchar 在我们的 C 程序教程结束时 对此 更好的方法 是什么 他正在等待用户输入 以便您可以看到程序的输出 否则它将完成并且输出将不可见 取决于操作系统
  • 使用 matplotlib 绘制 sklearn LinearRegression 输出

    导入文件后 我使用 numpy 将 x values 和 y values 分开 import pandas as pd from sklearn import linear model from matplotlib import pyp
  • 将 pandas 数据帧拆分为 N 个块[关闭]

    Closed 这个问题需要调试细节 目前不接受答案 我目前正在尝试将 pandas 数据帧拆分为未知数量的包含每 N 行的块 我尝试过使用 numpy array split 这个函数 但是将数据帧分割成包含未知行数的 N 个块 有没有一种
  • Mono 兼容的依赖注入框架

    Which 依赖注入框架兼容 并经过测试 Mono2 4 2 3 运行时 发行说明 温莎城堡 is
  • Fragment 元素中的 Fragment onClick 方法

    我读了很多关于片段的文章 但我仍然对如何做什么感到困惑 我有一个 MainActivity 它并排显示两个片段 在其中一个片段中 我有一个按钮 并在该按钮的片段布局 XML 中定义 android onClick buttonClicked
  • 使用 wget 递归获取其中包含任意文件的目录

    我有一个 Web 目录 用于存储一些配置文件 我想使用 wget 来提取这些文件并维护它们当前的结构 例如 远程目录如下所示 http mysite com configs vim vim 包含多个文件和目录 我想使用 wget 在客户端上
  • 使用开发依赖项在 Heroku 上部署时尝试从命名空间“Symfony\Bundle\WebProfilerBundle”加载类“WebProfilerBundle”

    我们有一个托管在 Heroku 上的 Symfony 4 3 Web 应用程序 这是一个新的设置我们从未设法让开发模式正常工作 网上有很多类似的问题 但没有一个能解决我们在这里面临的确切症状 该项目是使用命令行创建的 composer cr
  • MySQL InnoDB 数据库恢复

    我必须恢复在 MySQL 5 0 中无意中删除的数据库 通过检查备份文件 我似乎只有 FRM 文件来保存数据库数据 任何人都可以建议这是否是我从备份执行数据库恢复 导入所需的全部内容 或者我还需要提供其他文件来完成此操作吗 frm 文件不是
  • 如何像 Eclipse 一样清理 IntelliJ IDEA 中的项目缓存?

    有时IDE会因为缓存而出现一些错误 在Eclipse中 我们可以使用clean来解决问题 我怎样才能在 IntelliJ 中做到这一点 取决于您正在运行的版本 基本上是一样的 只需转到 File gt 使缓存无效 然后重新启动Intelli
  • 什么是 .exe 文件存根?

    我正在学习如何使用混淆我的程序集 NET反应堆 一种选择是 生成本机 x86 EXE 文件存根 我不明白它的目的 我导入一个程序集 例如 exe 文件 并输出一个经过混淆的 exe 文件 其大小大致相同 如果我检查过 生成本机 x86 文件
  • 在 VS2010 Express 中创建构造函数的代码片段

    VS 2010 Express 版本 适用于 C 中是否有任何现成的代码片段 可以使用选定属性中的参数创建构造函数 当我创建一个新类并编写以下代码时 public class FileDetails public int ID get se
  • 将 C# 控制台应用程序转换为 DLL

    我正在将 Betfair API 从 SOAP 重写为 JSON 并且按照之前的方式开始 将其作为控制台应用程序 然后从任务调度程序或 win 服务中调用 然而现在我被要求用代码做各种不同的工作 我不想为每项工作编写一个控制台应用程序 不同