Уже давно думал как правильно получить путь к сборке.
В принципе обычно работает вот такой код:
Path.GetDirectoryName(Assembly.GetExecutingAssembly().LocalPath)
Однако если сборка была помещена в GAC, то возникают проблемы, так как путь ведет в GAC.
Копаясь с висходниках MSBuild подсмотрел красивый способ получение правильного в любом случае пути:
Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath)
ЗЫ
Естественно вместо "Assembly.GetExecutingAssembly()" можно применять любой другой способ получить ссылку на сборку. Например, вот так можно получить путь к mscorlib.dll:
Console.WriteLine(new Uri(typeof(int).Assembly.CodeBase).LocalPath);
... << RSDN@Home 1.1.4 beta 3 rev. 279>>