Правильное получение пути к сборке
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.02.05 15:44
Оценка: 24 (7) +1
Уже давно думал как правильно получить путь к сборке.

В принципе обычно работает вот такой код:
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>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Правильное получение пути к сборке
От: migel  
Дата: 25.02.05 16:13
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Уже давно думал как правильно получить путь к сборке.


VD>В принципе обычно работает вот такой код:

VD>
VD>Path.GetDirectoryName(Assembly.GetExecutingAssembly().LocalPath)
VD>

VD>Однако если сборка была помещена в GAC, то возникают проблемы, так как путь ведет в GAC.
Не только по ASP.NET (то есть при использовании shadow Copy) он не работает

VD>Копаясь с висходниках MSBuild подсмотрел красивый способ получение правильного в любом случае пути:

VD>
VD>Path.GetDirectoryName(new Uri(Assembly.GetExecutingAssembly().CodeBase).LocalPath)
VD>


И это правильно
ЗЫ. все остальное лирика
... << RSDN@Home 1.1.4 beta 4 rev. 324>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.