我已经尝试了许多来源,但我只是不明白需要做什么,因为我不是一个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()都会出现红色错误,说明“非静态字段、方法或属性需要一个对象引用。”
我只想让它调用另一个方法,这样它就可以执行它的功能了。
如果你能尽可能的少一点技术含量,那就太好了。正如我已经说过的,我只是在这个项目中学习C#。
谢谢!
发布于 2013-04-30 22:29:07
将其更改为:
public static void Main()简而言之,这是因为static需要留下来。
更详细地说:方法的默认可访问性是private,因此现有方法等同于private static void Main()。这应该更改为public,这样您就可以从您的类ScriptMain调用它。
static意味着它属于类Program,可以作为Program.Main()调用,而不是实例,这意味着它只能从实例中调用,例如new Program().Main()。
发布于 2013-04-30 22:27:30
试一试
public class Program
{
public static void Main()
{发布于 2013-04-30 22:27:52
执行用C#编写的程序时,CLR会搜索用.entrypoint IL指令标记的静态方法,该方法要么不接受参数,要么只接受string[]类型的单个参数,并且返回类型为void或int,然后执行该方法
所以无论你要做什么,你都必须在静态main函数中调用它
https://stackoverflow.com/questions/16302207
复制相似问题