无法访问静态字段c#错误

时间:2016-05-07 22:17:43

标签: c# .net visual-studio-2012 ssis-2012

我在使用4.5 Framework的2012 SSIS包脚本任务中有以下c#代码:

[Microsoft.sqlServer.Dts.Tasks.ScripTask.SSISScriptTaskEntryPointAttribute]
Public partial class ScriptMain
{
     static ScriptMain()
     {
           AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomai_AssemblyResolveForDLL);
     }

      Static System.Reflection.Assembly CurrentDomain_AssemblyResolveForDLL(object sender, ResolveEventArgs args)
      {
            If (args.Name.Contains("NameofMydll"))
            {
                 string path = @"c:\Temp\";
                 return System.Reflection.Assembly.LoadFile(System.IO.Path.Combine(path, "NameofMydll.dll"));
            }
      }
       return null;
  }

此代码的目的是在运行时加载SSIS脚本任务中使用的.dll文件。代码的工作方式就像所描述的那样here.路径是硬编码的,它可以正常工作。

我遇到的问题是我需要动态设置路径的值,以便我可以在没有硬编码值的情况下将代码从服务器提升到服务器。由于该功能是静态的,我不知道该怎么做。

这里的代码行:

  MyVariable = (string)Dts.Variables.["MyVariable"].value;

...接收MyVariable声明为全局公共字符串变量的值(只要不在上面的代码中,这就可以正常工作)。但是使用“MyVariable”代替@"c:\Temp\"是我得到Cannot access non static field ...错误。

将声明更改为public static string允许它编译,但在运行时抛出错误。

 Exception has been thrown by the target of invocation.

在调用下面的代码行之前,通过函数分配值:

AppDomain.CurentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolveForDLL)

对函数的调用是Main()中的第一行代码,上面的代码行是第2行。

我需要做的就是从变量中分配路径的值。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

更改为NameExtractor

或通过它的位置BreathTestExtractorMethods

进行访问