I ran into this myself a couple of months ago and decided to write a short blog post about it in case you happen to run into this. SQL Server 2008 lets you use Visual Basic or C# as the scripting language in a Script Task. If you decided to translate some of your older packages from VB to C# be aware that there are some subtle differences and things don’t translate one to one.
If this is your code in Visual Basic
Dim FileName As String
FileName = (Dts.Variables("varFileName").Value).ToString()
MsgBox(FileName)
And if you change it to this in C#
string FileName;
FileName = (Dts.Variables("varFileName").Value).ToString();
MessageBox.Show(FileName);
You will get the following friendly error.
Non-invocable member ‘Microsoft.SqlServer.Dts.Tasks.ScriptTask.ScriptObjectModel.Variables’ cannot be used like a method.
Do you see what the error is in the code?
In C# you need to use brackets, not parentheses so instead of the top line of code, you need to use the bottom one
Dts.Variables(“varFileName”).Value
Dts.Variables[“varFileName”].Value
Here is the code block in C#
string FileName;
FileName = (Dts.Variables["varFileName"].Value).ToString();
MessageBox.Show(FileName);
*** Remember, if you have a SQL related question, try our Microsoft SQL Server Programming forum or our Microsoft SQL Server Admin forum

Denis has been working with SQL Server since version 6.5. Although he worked as an ASP/JSP/ColdFusion developer before the dot com bust, he has been working exclusively as a database developer/architect since 2002. In addition to English, Denis is also fluent in Croatian and Dutch, but he can curse in many other languages and dialects (just ask the SQL optimizer) He lives in Princeton, NJ with his wife and three kids.