我很难将 C# Dll 导入另一个简单的测试应用程序(控制台、winform 等等)。
基本上它包含在一个庞大的图书馆中,该图书馆使用欧共体增值税检查服务(我认为该 URL 是增值税 webservice。
该服务让您下载一个库,然后代码的实现由您决定。
我所做的是在 Visual Studio 2010 中启动一个新的 C# 类库,然后添加这个从 web 服务自动下载的类供您自己使用,然后编写我在网上找到的这个片段。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Xml;
using System.IO;
namespace EuroVAT
{
public class EuroVAT
{
public static Array check(string country, string vatNum)
{
bool valid;
string name;
string address;
checkVatService vatchecker = new checkVatService();
vatchecker.checkVat(ref country, ref vatNum, out valid, out name, out address);
return new object[] {country,
vatNum,
valid,
name,
address
};
}
}
}
好吧,当我创建一个新的控制台应用程序时,然后添加一个引用(右键单击项目名称,添加引用,浏览到 dll)到我从类库项目编译的 DLL,其中包括我在这里链接/引用的 2 个类。
这是我尝试使用我的 dll 的一些代码:
using EuroVAT;
namespace DLLTEST
{
class Program
{
static void Main(string[] args)
{
EuroVat test = new EuroVat();
}
}
}
基本上我无法从程序中调用它们。当我尝试调用 EuroVAT 对象时,我得到的只是
错误 1 找不到类型或命名空间名称“EuroVAT”(您是否缺少 using 指令或程序集引用?)
我试图建立,关闭,重新打开项目。试图把它放在Winforms等无济于事。我总是得到那个错误。
我究竟做错了什么?我能做些什么来解决它?
还有一个问题:
这段代码到底在做什么?
return new object[] {country,
vatNum,
valid,
name,
address
};
这就像返回一个对象数组?因为当我运行程序时,所有输出都被抛出。通常我必须通过某种循环来循环输出......
最后一个问题,如果有人可以提供帮助:
我必须将此 DLL 包含在 SQL 服务器中(我认为是 2008 年)
我已经阅读了有关该主题的内容,并发现要将值从 C# dll 传递到 SQL Server,您必须包含各种库并将您的方法声明为 SqlProcedures,而且还要将您的值传递/检索为 SqlTypes(SqlInt32、SqlString 等)。
这是我想出的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Xml;
using System.IO;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
namespace WebServiceVatEuropa
{
class Program
{
[SqlProcedure]
public static Array check(string country, string vatNum)
{
bool valid;
string name;
string address;
checkVatService vatchecker = new checkVatService();
vatchecker.checkVat(ref country, ref vatNum, out valid, out name, out address);
return new object[] {country,
vatNum,
valid,
name,
address
};
}
}
}
我希望它是正确的。我缺少的是如何将所有这些对象转换为 SqlTypes,如 SqlInt32、SqlString 等。我试过了,但我得到了大量的转换错误和类似的东西。它只是不允许我在 SqlTypes 中声明这些对象,并且我无法计算出最后一个返回语句来输出这些 SqlTypes。
如果可能的话,谁能举个例子?
谢谢你们。