Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Get path of class library

I have a class library that uses some xml files found in its own directory.

When referencing this library from another project, how do I ensure the library is working from it's own directory?

I tried Assembly.GetExecutingAssembly().Location but that still returns the path of the startup project.

like image 456
djskinner Avatar asked Nov 19 '09 09:11

djskinner


People also ask

What C is used for?

C programming language is a machine-independent programming language that is mainly used to create many types of applications and operating systems such as Windows, and other complicated programs such as the Oracle database, Git, Python interpreter, and games and is considered a programming foundation in the process of ...

What is the full name of C?

In the real sense it has no meaning or full form. It was developed by Dennis Ritchie and Ken Thompson at AT&T bell Lab. First, they used to call it as B language then later they made some improvement into it and renamed it as C and its superscript as C++ which was invented by Dr.

What is C in C language?

What is C? C is a general-purpose programming language created by Dennis Ritchie at the Bell Laboratories in 1972. It is a very popular language, despite being old. C is strongly associated with UNIX, as it was developed to write the UNIX operating system.

Is C language easy?

C is a general-purpose language that most programmers learn before moving on to more complex languages. From Unix and Windows to Tic Tac Toe and Photoshop, several of the most commonly used applications today have been built on C. It is easy to learn because: A simple syntax with only 32 keywords.


2 Answers

I know this is an old post but in the event someone else stumbles on it from a search, the easiest way I've found to do this is:

Public Class Foo

     Public Shared Function GetMyPath() As String
          Return Path.GetDirectoryName(GetType(Foo).Assembly.Location)
     End Function

End Class
like image 174
Lance Avatar answered Oct 12 '22 22:10

Lance


This is happening because your startup project has two options as to loading the library

  1. Copy it to it's own folder (what would cause the behaviour you are experimenting)
  2. Load it from GAC (what would make impossible to load any XML from it's folder)

So you have two options here:

  1. Import the XML files in the project and embed them as "embedded resources" in the class library and load it in memory at runtime
  2. Import the XML files in the project and change the "copy to output directory" property of the file to "true".
like image 36
André Pena Avatar answered Oct 13 '22 00:10

André Pena