In Visual Studio, when do you have to add a reference to a dll? I always try to have a minimum of references in my projects, I try to only include the ones that are really necessary.
I would think that I only need a reference if I have a using
statement in my source. But that's not always enough.
For instance, I have a very simple program that is using
System and Microsoft.Practices.EnterpriseLibrary.Data:
using System; using Microsoft.Practices.EnterpriseLibrary.Data; public class SimpleConnection { private static void Main() { var database = DatabaseFactory.CreateDatabase(); var command = database.GetSqlStringCommand( "select table_name from information_schema.tables"); using (var reader = database.ExecuteReader(command)) { while (reader.Read()) { Console.WriteLine(reader.GetString(0)); } } } }
I would think I only have to reference System and Microsoft.Practices.EnterpriseLibrary.Data. But that's not true. If I don't reference System.Data, the code won't compile.
The type 'System.Data.Common.DbCommand' is defined in an assembly that is not referenced. You must add a reference to assembly 'System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.
How can I know beforehand when I have to add a reference to something I'm not using
?
The using statement, by contrast, allows the programmer to deliberately and explicitly reference how to dispose of some object that has been used, or more accurately, a resource for an object, that has been used by the object.
CSharp Online Training The using statement is used to set one or more than one resource. These resources are executed and the resource is released. The statement is also used with database operations. The main goal is to manage resources and release all the resources automatically.
References tell the compiler where to look for types to import. Using statements tell the compiler where to look for "full names"
So you can either type
using System.Text StringBuilder sb; // ...
or
System.Text.StringBuider sb; // ...
But either way, you must have a reference to System.dll (or is it mscorlib for StringBuilder?). Without the ref, the compiler doesn't know what types are available.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With