我试过了很多来源,但我只是不明白需要做什么,因为我不是C#开发人员。我被分配这个项目的唯一原因是因为我们需要连接的Web服务显然只能在C#中兼容。所以我正在学习,因为我试图完成这个项目。在我们的部门没有其他人。知道C#。 我正在构建一个SSIS包,并使用C#进行“脚本任务”。该工具创建的scriptMain.cs是这个
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using ST_3c3fd2f1b7404161b62ff2b81f12192c.ServiceClient;
namespace ST_3c3fd2f1b7404161b62ff2b81f12192c.csproj
{
[System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
public void MainScript()
{
// TODO: Add your code here
Program.Main();//I AM TRYING TO MAKE THE CALL TO PROGRAM.cs file Main() method
Dts.TaskResult = (int)ScriptResults.Success;
}
}
}
我猜这个ScriptMain.cs是我运行SSIS时执行的文件。所以我试图从上面调用scriptMain.cs(Program.Main())到下面的Program.cs文件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ST_3c3fd2f1b7404161b62ff2b81f12192c.ServiceClient;
using ST_3c3fd2f1b7404161b62ff2b81f12192c.csproj;
namespace ST_3c3fd2f1b7404161b62ff2b81f12192c
{
class Program
{
static void Main()//Trying to call this so that it can execute its methods/processes
{
WebClient client = GetClient();
// Example 1 - Select Changes
SelectTicketChanges(client);
SelectStepChanges(client);
}
正如您所看到的,此Main()方法调用其他方法。我没有写这个BTW,它是由我们尝试连接的客户提供的。
现在,Program.Main(),Main()下方有红色错误 “由于其保护级别”
,Program.Main()无法访问如果我改变
static void Main()
到
public void Main()
比我的ScriptMain.cs Program.Main()所有得到Red Error下面说 “非静态字段,方法或属性需要对象引用。”
我只是想让它调用其他方法,以便它可以执行其功能。
如果你可以尽可能少的技术,那将是非常好的。正如我所说的那样,我正在学习C#,因为我正在完成这个项目。
谢谢!
答案 0 :(得分:3)
将其更改为:
public static void Main()
简而言之,这是因为static
需要留下来。
要提供更多详细信息:方法的默认可访问性为private
,因此现有方法等同于private static void Main()
。这应更改为public
,以便您可以从班级ScriptMain
拨打电话。
static
表示它属于类Program
,可以称为Program.Main()
,而不是实例,这意味着它只能从实例调用,例如new Program().Main()
。
答案 1 :(得分:2)
尝试
public class Program
{
public static void Main()
{
答案 2 :(得分:0)
当执行用C#编写的程序时,CLR搜索标记有.entrypoint IL指令的静态方法,该指令不带参数或类型为string []的单个参数,并且返回类型为void或者int,并执行它
所以你必须要做的就是在静态主函数
中调用它答案 3 :(得分:0)
看起来你需要查找OO(面向对象)编程和C#。 http://www.codeproject.com/Articles/219869/Object-Oriented-Programming-in-Csharp-NET
但是要回答你的问题,如果你想访问静态方法引用他们的类然后它们,例如:
Program.Main();
要访问非静态方法,首先必须实例化一个对象(“类”更精确),例如:
MyClass c = new MyClass();
c.Method();
追加:您可能无法编译/运行该代码,因为visual studio认为Program.Main()
是程序的入口点(即使不是这种情况)您需要告诉编译器实际上{{ 1}}是查看解决方案属性的入口点。
答案 4 :(得分:0)
使用
public static void Main()
{
}